python - 根据值的计数在数据框中删除列

标签 python pandas dataframe data-cleaning

嗨,我是 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

注意 CD 列被删除,因为它们的非 Na 值少于 2 个

关于python - 根据值的计数在数据框中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64631540/

相关文章:

python - 使用 python pandas 组合日期和时间列时出现问题

python - 使用 pandas 使用分隔符将文本发送到不同的列

python - 如何防止 pandas.Dataframe.to_latex 在 latex 公式字符(即美元符号/括号)之前添加转义\字符?

python - 更快地读取 CSV 文件

python - 从文件 csv 插入 pymongo 时出错

python - 如何从 json 数据创建 DataFrame - 数组中的字典、列表和数组

python - OpenGL获取投影矩阵

python - 为什么 GDAL 打不开 big geo Tiff?

python - Pandas 如何截断分钟,秒 pandas.tslib.Timestamp

pandas - 对Pandas数据框进行排序并打印最高的n个值