我建议把格式改成
MultiTndex Series
:
np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
print (df)
A B C
0 8 8 3
1 7 7 0
2 4 2 5
a = df.stack()
print (a)
0 A 8
B 8
C 3
1 A 7
B 7
C 0
2 A 4
B 2
C 5
dtype: int32
b = a[a == 8].index.remove_unused_levels().tolist()
print (b)
[(0, 'A'), (0, 'B')]
编辑:
为了更好的性能可以使用
numpy.where
对于匹配值的索引,然后
zip
索引索引和列名称到元组:
np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
print (df)
A B C
0 8 8 3
1 7 7 0
2 4 2 5
a = np.where(df == 8)
print (a)
(array([0, 0], dtype=int64), array([0, 1], dtype=int64))
b = list(zip(df.index[a[0]], df.columns[a[1]]))
print (b)
[(0, 'A'), (0, 'B')]