从Python DataFrame的行/列数据配对

时间:2019-12-11 02:23:51

标签: python pandas dataframe

我想像Python的数据框一样从下面配对 我想做的是使行和列成对,例如: (1,a),(4,c),(6,c),(3,d),(2,f),(4,f),(6,f),(6,g)

有没有办法做到这一点。 预先感谢。

Example

2 个答案:

答案 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')]