我有一个以下结构的数据框。我想获得特定行唯一的列号。
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中有一个有效的解决方案吗?
答案 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')