如果列中有一定百分比的NaN值,则返回该列(列)(Python)

9 浏览
0 Comments

如果列中有一定百分比的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(缺失值)

0
0 Comments

问题原因:根据回答中所给的代码,是为了找出具有一定百分比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`中。

感谢回答者的帮助!非常棒!非常感谢!

我可能可以将那一行代码拆分成多行,以便更易于阅读。不过没关系,很清楚了吧?

非常清楚!再次感谢!

0