根据其值计数在数据框中删除列

时间:2020-11-01 11:47:18

标签: python pandas dataframe data-cleaning

嗨,我是熊猫的新手,正在为操纵而挣扎。 我有一个包含大量列的数据框df,我只想保留计数超过5000个值的列数。

我尝试了以下循环,但无法正常工作。有没有简单的方法可以做到这一点?还有一个我可以创建的函数,将其应用于任何我想保留仅n个值或更多的列的数据框吗?

for column in df.columns: 
   if df[column].count() > 5000: 
      column = column
   else: 
      df[column].drop()

谢谢

2 个答案:

答案 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

通知栏CD之所以删除,是因为它们的非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