我想知道是否有一种方法可以将以下代码重写为列表理解。另外,我想知道在我的情况下是否比循环更好。
我有一个形状为(5000,92)的熊猫数据框。目标是遍历每一行,评估每一列并计算NaN值,如果NaN的数量大于88,则输出True或False。 工作代码在这里:
param_1 = [1,2]
fmincon(err1_convert,param_1,real_distance,ideal_distance)
我尝试了以下一种不起作用的方法:
fmincon
非常感谢任何帮助/建议
答案 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))]