堆栈上的熊猫行为

use*_*146 2 python dataframe pandas

让我假设我有

ID A1 B1  A2  B2
1  3  4   5   6
2  7  8   9   10
Run Code Online (Sandbox Code Playgroud)

我想使用pandas stack并希望实现类似的功能

ID A B
1  3 4
1  5 6
2  7 8
2  9 10
Run Code Online (Sandbox Code Playgroud)

但我得到的是

ID  A   B
1   3   4
2   7   8
1   5   6
2   9   10
Run Code Online (Sandbox Code Playgroud)

这就是我正在使用的

df.stack().reset_index().
Run Code Online (Sandbox Code Playgroud)

是否有可能使用Stack实现这样的东西?append()在熊猫中的方法做到这一点,但如果可能的话我想实现使用pandas stack()任何想法吗?

Sco*_*ton 5

你可以使用pd.wide_to_long:

pd.wide_to_long(df, ['A','B'], 'ID', 'value', sep='', suffix='.+')\
  .reset_index()\
  .sort_values('ID')\
  .drop('value', axis=1)
Run Code Online (Sandbox Code Playgroud)

输出:

   ID  A   B
0   1  3   4
2   1  5   6
1   2  7   8
3   2  9  10
Run Code Online (Sandbox Code Playgroud)