查找Pandas数据帧中行唯一的列

时间:2016-05-22 02:29:54

标签: python pandas dataframe

我有一个以下结构的数据框。我想获得特定行唯一的列号。

1 1 0 1 1 1 0 0 0
0 1 0 1 0 0 0 0 0
0 1 0 0 1 0 0 0 0
1 0 0 0 1 0 0 0 1
0 0 0 0 0 0 1 1 0
1 0 0 0 1 0 0 0 0

在上面的示例中,我应该得到coln6,coln7,coln8,coln9(因为只有一行具有特定于这些列的值)。此外,我应该能够区分像coln7和coln8这样的列应该组合在一起,因为它们对同一行是唯一的。 Python中有一个有效的解决方案吗?

2 个答案:

答案 0 :(得分:1)

这是我的第一个方法:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.array([
    1,1,0,1,1,1,0,0,0,
    0,1,0,1,0,0,0,0,0,
    0,1,0,0,1,0,0,0,0,
    1,0,0,0,1,0,0,0,1,
    0,0,0,0,0,0,1,1,0,
    1,0,0,0,1,0,0,0,0]).reshape(6,9))

print df.sum(axis=0).apply(lambda x: True if x == 1 else False)

输出:

0    False
1    False
2    False
3    False
4    False
5     True
6     True
7     True
8     True
dtype: bool

答案 1 :(得分:1)

您可以在df上调用sum并与1进行比较,并使用它来屏蔽列:

In [19]:
df.columns[df.sum(axis=0) == 1]

Out[19]:
Int64Index([5, 6, 7, 8], dtype='int64')