如果列中有一定百分比的NaN值,则返回该列(列)(Python)
如果列中有一定百分比的NaN值,则返回该列(列)(Python)
想要将至少有25% NaN值的列作为新的数据框返回。
考虑使用条件语句,使用.loc,.isnull或count,但不确定最有效的方法是什么。非常感谢任何帮助。
数据框:
df1:
(A,B,C = 列)
A B C
1 1 2 1
2 NaN NaN 3
3 4 NaN 1
4 2 NaN 4
思路:
df.loc[df['series'] == nan >= 25% ]
或者类似这样的方法:
如果'系列'中列(x)的nan计数 >= (.25 * (计数(x)))
返回loc[x]
返回新数据框:
df2:
A B
1 1 2
2 NaN NaN
3 4 NaN
4 2 NaN
返回A和B,因为它们的每列至少有25%的值为NaN(缺失值)
问题原因:根据回答中所给的代码,是为了找出具有一定百分比NaN值的列。
解决方法:通过计算每列中NaN值的数量,然后与总列数的四分之一进行比较,得到一个布尔掩码。然后使用该掩码将具有一定百分比NaN值的列返回到新的数据框中。
以下是代码:
na_count_mask = df.isna().sum(axis=0) >= (col_count // 4) res_df = df.loc[na_count_mask]
以上代码将根据每列中NaN值的数量是否大于等于总列数的四分之一,生成一个布尔掩码。然后使用该掩码将具有一定百分比NaN值的列返回到新的数据框`res_df`中。
感谢回答者的帮助!非常棒!非常感谢!
我可能可以将那一行代码拆分成多行,以便更易于阅读。不过没关系,很清楚了吧?
非常清楚!再次感谢!