【问题标题】:Get non-null elements in a pandas DataFrame获取 pandas DataFrame 中的非空元素
【发布时间】:2017-06-02 00:04:47
【问题描述】:

我有一个DataFrame,我想获取一些非空元素作为列表。

具体来说,给定df

df = pd.DataFrame({"a":["A",None,"B"],"b":[None,"C","D"],"c":["E","F",None]})
      a     b     c
0     A  None     E
1  None     C     F
2     B     D  None

和有趣的列列表["a","c"],我想提取指定列的非None元素的列表,即,

["A","B","E","F"]

我想我能做到

[value for colname in interesting_columns
 for value in df.loc[df[colname].notnull(),colname]]

但我想知道是否有一些非迭代魔术。

【问题讨论】:

    标签: python python-2.7 pandas dataframe


    【解决方案1】:

    您可以将stack 转换为长格式并使用.values 访问器检索数据。默认情况下,stack() 会自动删除缺失值:

    df[['a', 'c']].T.stack().values
    # array(['A', 'B', 'E', 'F'], dtype=object)
    

    或者如果你想要一个列表:

    df[['a', 'c']].T.stack().tolist()
    # ['A', 'B', 'E', 'F']
    

    需要T 才能按照您请求的顺序获取值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 2021-06-16
      • 2019-12-27
      • 2022-01-23
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多