首页 > 解决方案 > 根据行中的平均元素数删除列

问题描述

有点奇怪的问题。给定一个示例数据框:

    df = 

   1    1.1     2   2.1     3   3.1     4   4.1     5   5.1

  11     22    33    44    55    66    77    88    99    12
  12     13    14    15   Nan   Nan   Nan   NaN   NaN   NaN
  11     22    33    44    55    66    77   NaN   NaN   NaN

我想删除包含NaN值的列。但有时我NaN的 ' 从第 3 列开始,所以我不想放弃它们。我想做一些近似或平均。我想检查之前行的平均长度NaN并删除其余行。

例子:

因此平均值为 7。所以我的数据将是:

    df = 

   1    1.1     2   2.1     3   3.1     4   

  11     22    33    44    55    66    77   
  12     13    14    15   Nan   Nan   Nan   
  11     22    33    44    55    66    77   

或许您可以建议其他数据准备方法

标签: pythonpandasnumpydata-cleaning

解决方案


如果 NaN 总是在行中最后(例如,您不会将第一列作为 NaN,第二列作为值,然后是 NaN 等),您可以执行以下操作:

df.iloc[:, :int(df.count(axis=1).mean())]

这会给你:

    0   1   2   3     4     5     6
0  11  22  33  44  55.0  66.0  77.0
1  12  13  14  15   NaN   NaN   NaN
2  11  22  33  44  55.0  66.0  77.0

推荐阅读