python - 如何根据三列中的顺序将三列合并为一列
问题描述
请给我一个建议好吗?
我有三列,例如:
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),但我是堆栈。
解决方案
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')
推荐阅读
- java - 通过目录中的文件前缀过滤任何深度的所有文件
- coldfusion - 以格式化的字段名和字段值类型返回查询结果
- azure - 天蓝色应用程序服务中的 Signalr 不适用于 websocket
- python - 为什么将字节数据解码为字符串无法用元素树解析?
- flutter - Bloc Listener:访问前一个状态
- android - Android BottomSheetDialogFragment 在查看 setVisibility(View.GONE) 后弹出到 TOP
- python - exchangelib - 附加附件以回复时出错
- python - TypeError:字段“id”需要一个数字,但得到了
- python - 单词边界 \b 不适用于 Python 正则表达式中带点的字符串
- python - max_heapify 遍历堆以获取下一级节点的迭代方式