通过堆叠前两列并重复第三列,从形状(2,3)的df创建形状(4,2)的df

时间:2017-01-25 19:32:19

标签: python pandas

我想重塑数据帧df1

r1c1 |r1c2 | r1c3
r2c1 |r2c2 | r2c3

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

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

pandas中最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

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