我有这个数据框:
data = np.array([[np.nan, 0], [2, 0], [np.nan, 1]])
df = pd.DataFrame(data=data, columns = ['a', 'b'])
看起来是这样的:
a b
--------
0 NaN 0.0
1 2.0 0.0
2 NaN 1.0
我的目标是在“a”列等于NaN而“b”列等于0时创建第三列“c”,其值为1否则c“将为0。简单的SQL case语句是:
(CASE WHEN a IS NULL AND b = 0 THEN 1 ELSE 0 END) AS C
所需的输出是:
a b c
-----------
0 NaN 0.0 1
1 2.0 0.0 0
2 NaN 1.0 0
我的(错误的)尝试:
df['c'] = np.where(df['a']==np.nan & df['b'] == 0, 1, 0)
很多泰铢。
我个人的偏好是将pandas
apply
函数与if语句一起使用:你就快到了,用
np.where(df['a'].isnull() & (df['b'] == 0), 1, 0)
进行空检查。或者
不能使用np.NaN检查序列值是否为NaN,而应使用series.isnull()
下面的代码给出了所需的输出:
相关问题 更多 >
编程相关推荐