在iloc,isna(),sum()和if语句中使用列表推导

时间:2019-02-06 11:20:55

标签: python-3.x pandas

我想知道是否有一种方法可以将以下代码重写为列表理解。另外,我想知道在我的情况下是否比循环更好。

我有一个形状为(5000,92)的熊猫数据框。目标是遍历每一行,评估每一列并计算NaN值,如果NaN的数量大于88,则输出True或False。 工作代码在这里:

param_1 = [1,2]
fmincon(err1_convert,param_1,real_distance,ideal_distance)

我尝试了以下一种不起作用的方法:

fmincon

非常感谢任何帮助/建议

1 个答案:

答案 0 :(得分:1)

我相信您需要将~反转boolena掩码,并按每行计数sum

nans = (~df.isna().sum(axis=1).gt(88)).tolist()

您的列表理解功能也可以工作,但是如果使用更大的DataFrame,则会更慢:

nans = [not df.iloc[i,:].isna().sum() > 88 for i in range(0,len(df))]