【问题标题】:How do I select row / columns with more than certain number of missing data in Pandas?如何在 Pandas 中选择缺失数据超过一定数量的行/列?
【发布时间】:2016-11-16 22:13:14
【问题描述】:

我正在尝试学习如何选择具有超过一定数量的缺失数据的行或列。使用value_counts,我可以找到满足条件的列,但是我不知道如何以int形式检索索引,以便我可以访问并从数据框中删除相应的列。

如何转换/检索 int 中的索引?而且,有没有更简单/更简单的方法来做到这一点?

  df3 = pandas.DataFrame([[1,6.5,3],[1,'NA','NA'],[3,'NA','NA'],['NA',6.5,'NA']])
    df3_value_counts = df3.apply(pandas.value_counts).fillna(0).ix['NA']
    df3_missing_data_index = df3_value_counts[df3_value_counts > 2].index

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    首先,你最好使用代表NaN的东西

    df3 = df3.replace('NA', np.nan).astype(float)
    

    然后你可以使用内置的方法来做你想做的事

    df3.dropna(axis=1, thresh=2)
    

    【讨论】:

      【解决方案2】:

      这是一种方法 -

      df3.columns[(df3.values == 'NA').sum(0) > 2]
      

      另外一种可能有点慢,但紧凑 -

      df3.columns[(df3 == 'NA').sum(0) > 2]
      

      示例运行 -

      In [292]: df3
      Out[292]: 
          0    1   2
      0   1  6.5   3
      1   1   NA  NA
      2   3   NA  NA
      3  NA  6.5  NA
      
      In [293]: df3.columns[(df3.values == 'NA').sum(0) > 2]
      Out[293]: Int64Index([2], dtype='int64')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-16
        相关资源
        最近更新 更多