【发布时间】:2020-02-03 03:39:29
【问题描述】:
我有一个有 15 列的 DataFrame。大多数列是NaN。我想要一个新列显示每行中有多少 NaN 列。
输入:
0 1 3
a 1 4 NaN
b 2 5 7
c 3 6 NaN
输出:
0 1 3 number_of_non_nans
a 1 4 NaN 2
b 2 5 7 3
c 3 6 NaN 2
Pandas 有 sum() 但我不知道如何应用它。它似乎只能对实际值求和。
df_f['number_of_non_nans'] = df_f.sum(1, axis=1)
有没有办法计算非 NaN?
【问题讨论】:
-
您可以将带有 numpy .isna() 函数的 lambda 应用到数据框并按行或列求和。
-
只需
df.count(axis=1)就可以了,它只会计算 True 值。 -
或 df.isna() 熊猫函数
-
结合@Datanovice 的建议,它应该是 df.isna().count(axis=1)。
-
@Datanovice 解决方案已完成。 Count 仅计算“非 nan”值。无需在前面添加 isna。