【发布时间】:2020-12-22 02:24:25
【问题描述】:
我有以下数据:
Node Case dx dy dz
1 A1 338.5E-9 0.0 163.6E-9
1 A2 0.0 0.0 0.0
1 A3 -133.4E-9 -268.4E-9 -22.36E-6
5 A1 192.6E-9 0.0 -22.47E-9
5 A2 0.0 0.0 0.0
5 A3 231.5E-9 -268.4E-9 -35.82E-6
我想迭代地遍历每一行数据并将“dx”、“dy”和“dz”打印到一个列表中或(最好)在一个新表上——见下文。我希望代码循环遍历每一行,直到“节点”列变为不同的数字(即从 1 到 5)。
所以我希望新表的第一行数据看起来像这样:
dx1 dy1 dz1 dx2 dy2 dz2 dx3 dy3 dz3
338.5E-9 0.0 163.6E-9 0.0 0.0 0.0 -133.4E-9 -268.4E-9 -22.36E-6
任何帮助将不胜感激。 谢谢
【问题讨论】:
-
欢迎,索引重要吗?如果您可以删除索引,那么您可以
df.set_index('[Node', 'Case]).unstack(),这样您就可以非常接近而无需循环 -
或者你可以
df.pivot(index='Node', columns='Case', values=['dx', 'dy', 'dz']) -
嗨 - 感谢您的回复。不幸的是,当我执行此方法时,我丢失了左侧“节点”列中的升序数字顺序。我可以采取进一步的步骤来重新排序这些值吗?此外,这些方法是否适用于更多情况,即 A1、A2、A3 和 A4 等?
-
是的,很抱歉索引很重要 - 您的两种方法都给出以下第一行:[338.5E-9, 0.0, -133.4E-9, 0.0, 0.0, -268.4E-9, 163.6E-9, 0.0, -22.36E-6] 这不是我想要的
标签: python python-3.x database pandas loops