我有一个pandas数据框,我需要找出特定行的非零元素列的标签。
例如:
columns = ['a', 'b', 'c']
df = pd.DataFrame([[1, 0, 1], [0, 1, 0], [3, 5, 2]], index=columns, columns=columns)
对于列a
,我希望返回['a', 'c']
。
答案 0 :(得分:0)
这看起来像你想要的东西吗?
df.index[(df != 0)['a']]
# Index([u'a', u'c'], dtype='object')
df.index[(df != 0)['b']]
# Index([u'b', u'c'], dtype='object')
df.index[(df != 0)['c']]
# Index([u'a', u'c'], dtype='object')
要遍历列并构建字典,我们可以这样做:
map(lambda col: {col: df.index[(df != 0)[col]].values}, df.columns)
# [{'a': array(['a', 'c'], dtype=object)},
# {'b': array(['b', 'c'], dtype=object)},
# {'c': array(['a', 'c'], dtype=object)}]