我想像Python的数据框一样从下面配对 我想做的是使行和列成对,例如: (1,a),(4,c),(6,c),(3,d),(2,f),(4,f),(6,f),(6,g)
有没有办法做到这一点。 预先感谢。
答案 0 :(得分:2)
数据:
a b c d e f g
1 1.0 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN 1.0 NaN
3 NaN NaN NaN 1.0 NaN NaN NaN
4 NaN NaN NaN 1.0 NaN 1.0 NaN
选项1 :您可以使用np.where
:
rows, cols = np.where(df.eq(1))
[*zip(df.index[rows], df.columns[cols])]
输出:
[(1, 'a'), (2, 'f'), (3, 'd'), (4, 'd'), (4, 'f')]
选项2 :
df.stack().index.values
输出:
array([(1, 'a'), (2, 'f'), (3, 'd'), (4, 'd'), (4, 'f')], dtype=object)
答案 1 :(得分:1)
如果您有这样的数据框:
a b c d e f g
1 1.0 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN 1.0 NaN
3 NaN NaN NaN 1.0 NaN NaN 1.0
您可以使用stack
against axis 1来获取
s = df.stack()
1 a 1.0
2 f 1.0
3 d 1.0
g 1.0
dtype: float64
一个简单的to_list()
给出了
>>> s.index.to_list()
[(1, 'a'), (2, 'f'), (3, 'd'), (3, 'g')]