如果“Independent”列等于0,1或者为null,我想将变量设置为0。我一直在尝试这样的事情:
df["Iflag"] = df.Independent.where((df.Independent == 0) | (df.Independent == 1 )|(df.Independent.isnull())).astype(int)
Iflag = df[df.Iflag == 0]
pd.DataFrame(Iflag, columns=["LocIdent","Independent"]).to_csv(Targcsv, mode='ab')
我收到错误消息,说我无法将NA转换为整数。当我放弃检查以查看Independent是否为null时,此代码有效。我的问题是,在Pandas中编写包含空值的if语句的最佳方法是什么?
答案 0 :(得分:2)
我首先填写nan
值,然后您的代码才能运行,NaN
无法使用整数表示错误。
类似
# fill the nan values
df.Independent = df.Independent.fillna(0)
# set any values that are 1 to 0
df.loc[df.Indepedent == 1, 'Independent'] = 0
# take a view of the df where the value is 0
Iflag = df[df.Independent == 0]
pd.DataFrame(Iflag, columns=["LocIdent","Independent"]).to_csv(Targcsv, mode='ab')
如果您要将所有内容重新设置为0,那么检查值为0的位置是多余的,所以您需要做的就是找到它已经存在的行,将这些设置为0,然后查看满足条件的df。