我有这个 df:
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
我的 目标 是创建第三列“c”,当“a”列等于 NaN 且“b”列等于 0 时,该列的值为 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)
很多谢谢。
原文由 Antonio Serrano 发布,翻译遵循 CC BY-SA 4.0 许可协议
你快到了,而不是使用
np.where(df['a'].isnull() & (df['b'] == 0), 1, 0)
进行空值检查。或者,