在pandas DataFrame中获取非null元素

时间:2017-01-17 19:29:00

标签: python python-2.7 pandas dataframe

我有一个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]]

但我想知道是否有一些非迭代的魔法技巧。

1 个答案:

答案 0 :(得分:2)

您可以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需要按照您请求的顺序获取值。