嗨,我是 Pandas 的新手,正在为操纵而苦苦挣扎。 我有一个包含大量列的数据框 df,我只想保留计数超过 5000 个值的列数。
我尝试了下面的循环,但它不起作用。有什么简单的方法可以做到这一点?还有我可以创建一个函数来将其应用于任何我想保留仅包含 n 个值或更多值的列的数据框吗?
for column in df.columns:
if df[column].count() > 5000:
column = column
else:
df[column].drop()
谢谢
最佳答案
我们可以使用DataFrame.dropna
其中有参数 thresh
,例如:
import pandas as pd
import numpy as np
# example dataframe
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, np.nan],
'C': [np.nan, np.nan, 6],
'D': [np.nan, np.nan, np.nan]
})
A B C D
0 1 4.0 NaN NaN
1 2 5.0 NaN NaN
2 3 NaN 6.0 NaN
我们将阈值设置为 2
,在您的情况下为 5000
:
df.dropna(thresh=2, axis=1)
A B
0 1 4.0
1 2 5.0
2 3 NaN
注意 C
和 D
列被删除,因为它们的非 Na 值少于 2 个
关于python - 根据值的计数在数据框中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64631540/