我想重塑数据框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/