嗨,我是熊猫的新手,正在为操纵而挣扎。 我有一个包含大量列的数据框df,我只想保留计数超过5000个值的列数。
我尝试了以下循环,但无法正常工作。有没有简单的方法可以做到这一点?还有一个我可以创建的函数,将其应用于任何我想保留仅n个值或更多的列的数据框吗?
for column in df.columns:
if df[column].count() > 5000:
column = column
else:
df[column].drop()
谢谢
答案 0 :(得分:1)
我们可以使用带有参数thresh
的{{3}},例如:
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个
答案 1 :(得分:0)
尝试一下:
newdf=df.copy()
for column in newdf.columns:
if df[column].count() <= 5000:
df=df.drop(column, axis=1)
或等价物:
newdf=df.copy()
for column in newdf.columns:
if df[column].count() <= 5000:
del df.column