#在对pandas中的dataframe进行apply操作时,经常会遇到某列中存在nan值的情况,需要先进行判断找出这样的值再进行分情况处理。
# None是一个对象,而NULL是一个类型。
# Python中没有NULL,只有None,None有自己的特殊类型NoneType。
# None 是 NoneType 数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined),也就是说,我们不能再创建其它 NoneType 类型的变量,#但是可以将 None 赋值给任何变量。如果希望变量中存储的东西不与任何其它值混淆,就可以使用 None。
#*****************************************************************
# 需求:python的DataFrame 中根据两列 列1 和列2 来生成列3 ,具体为如果列1为空则列3值为A 否则 列1>列2 生成B 再否则列2<=列1 列3生成C。
import pandas as pd
import numpy as np
def function(df):
# if df['col1'].isnull(): #不行
# if df['col1']==None: #不行
# if df['col1'] in None: #不行
# if df['col1'] == "": #不行
if pd.isnull(df['col1']):
return 'A'
elif df['col1'] > df['col2']:
return 'B'
elif df['col1'] <= df['col2']:
return 'C'
col1=[60,None,20,24,50,40,65,50,36,50]
col2=[51,40,41,25,51,41,36,51,37,51]
df=pd.DataFrame({"col1":col1,"col2":col2})
# df=df.fillna()
df['col3'] = df.apply(function, axis=1)
print(df)
print("*"*50)
exit()
#****************************************************************************************************
col1 col2 col3
0 60.0 51 B
1 NaN 40 A
2 20.0 41 C
3 24.0 25 C
4 50.0 51 C
5 40.0 41 C
6 65.0 36 B
7 50.0 51 C
8 36.0 37 C
9 50.0 51 C
**************************************************
Process finished with exit code 0