我想重塑数据框df1

r1c1 |r1c2 | r1c3
r2c1 |r2c2 | r2c3




r1c1 | r1c3
r2c1 | r2c3
r1c2 | r1c3
r2c2 | r2c3


第二列将堆叠在第一列上,而(原始)第三列将被重复。

pandas中执行此操作的最佳方法是什么?

最佳答案

pandas

df1.set_index(2).unstack().reset_index(1).iloc[:, ::-1]

      0     2
0  r1c1  r1c3
0  r2c1  r2c3
1  r1c2  r1c3
1  r2c2  r2c3




numpy

v = df1.values
np.hstack([v[:, :2].reshape(-1, 1), v[:, 2].repeat(2)[:, None]])

array([['r1c1', 'r1c3'],
       ['r1c2', 'r1c3'],
       ['r2c1', 'r2c3'],
       ['r2c2', 'r2c3']], dtype=object)


设定

df1 = pd.DataFrame({0: ['r1c1', 'r2c1'], 1: ['r1c2', 'r2c2'], 2: ['r1c3', 'r2c3']})
print(df1)

      0     1     2
0  r1c1  r1c2  r1c3
1  r2c1  r2c2  r2c3

关于python - 通过堆叠前两列并重复第3列,从形状为(2,3)的df创建形状为(4,2)的df,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41860094/

10-12 21:09