我想重塑数据帧df1
r1c1 |r1c2 | r1c3
r2c1 |r2c2 | r2c3
到
r1c1 | r1c3
r2c1 | r2c3
r1c2 | r1c3
r2c2 | r2c3
第二列将堆叠在第一列上,并且(原始)第三列将被重复。
在pandas
中最好的方法是什么?
答案 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