如何选择满足条件的列名称

时间:2019-03-29 07:31:44

标签: pandas

我需要选择计数大于2的列名。我有此数据集:

    Index | col_1 | col_2 | col_3 | col_4 
    -------------------------------------
      0   |   5   |  NaN  |   4   |  2
      1   |   2   |   2   |  NaN  |  2
      2   |  NaN  |   3   |  NaN  |  1
      3   |   3   |  NaN  |  NaN  |  1

预期结果是一个列表:['col_1','col_4']

当我使用

    df.count() > 2

我明白了

    col_1 True
    col_2 False
    col_3 False
    col_4 True
    Length: 4, dtype: bool

这是测试代码

    import pandas as pd
    import numpy as np

    data = {'col_1': [5, 2, np.NaN, 3],
            'col_2': [np.NaN, 2, 3, np.NaN],
            'col_3': [4, np.NaN, np.NaN, np.NaN],
            'col_4': [2, 2, 1,1]}

    frame = pd.DataFrame(data)

    frame.count() > 2

3 个答案:

答案 0 :(得分:0)

您可以这样做。

import pandas as pd
import numpy as np

data = {'col_1': [5, 2, np.NaN, 3],
        'col_2': [np.NaN, 2, 3, np.NaN],
        'col_3': [4, np.NaN, np.NaN, np.NaN],
        'col_4': [2, 2, 1,1]}

frame = pd.DataFrame(data)

expected_list = []
for col in list(frame.columns):
    if frame[col].count() > 2:
        expected_list.append(col)

答案 1 :(得分:0)

使用dict可以轻松解决此问题:

frame[[key for key, value in dict(frame.count() > 2).items() if value]]

答案 2 :(得分:0)

尝试:

(df.columns)[(df.count() > 2).values].to_list()