首页 > 解决方案 > 如何根据三列中的顺序将三列合并为一列

问题描述

请给我一个建议好吗?

我有三列,例如:

x     y     z
0.2   0.5   0.26
0.75  0.58  0.25
0.78  0.86  0.95
0.56  0.75  0.52
0.45  0.47  0.57
0.2   0.58  0.98

结果:我只需要一个具有此序列的列:

    xyz
x1  0.2
y1  0.5
z1  0.26
x2  0.75
y2  0.58
z2  0.25
... 0.78
    0.86
    0.95
    …

我没有发现类似的问题...非常感谢。我尝试使用“dcast”(R)或“concat”(Python),但我是堆栈。

标签: pythonrmergeconcatdcast

解决方案


您可以使用pd.melt和创建所需的行名称np.tile

m = df.T.melt(value_name='xyz')
rows = np.tile(df.columns, df.shape[0])
m['variable'] = rows.tolist() + (m.variable + 1).astype(str)

    variable   xyz
0        x1  0.20
1        y1  0.50
2        z1  0.26
3        x2  0.75
4        y2  0.58
5        z2  0.25
6        x3  0.78
7        y3  0.86
8        z3  0.95
9        x4  0.56
10       y4  0.75
11       z4  0.52
12       x5  0.45
13       y5  0.47
14       z5  0.57
15       x6  0.20
16       y6  0.58
17       z6  0.98

如果你想像索引那样做:

m.set_index('variable')

推荐阅读