python - 循环遍历表行并收集数据
问题描述
我有以下数据:
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_out = (df.set_index(['Node', df.groupby('Node').cumcount()])[['dx', 'dy', 'dz']]
.unstack().sort_index(level=1, axis=1))
df_out.columns = [f'{i}{j}' for i, j in df_out.columns]
df_out
输出:
dx0 dy0 dz0 dx1 dy1 dz1 dx2 dy2 dz2
Node
1 3.385000e-07 0.0 1.636000e-07 0.0 0.0 0.0 -1.334000e-07 -2.684000e-07 -0.000022
5 1.926000e-07 0.0 -2.247000e-08 0.0 0.0 0.0 2.315000e-07 -2.684000e-07 -0.00003
将 + 1 添加到 cumcount:
df_out = (df.set_index(['Node', df.groupby('Node').cumcount() + 1])[['dx', 'dy', 'dz']]
.unstack().sort_index(level=1, axis=1))
df_out.columns = [f'{i}{j}' for i, j in df_out.columns]
df_out
输出:
dx1 dy1 dz1 dx2 dy2 dz2 dx3 dy3 dz3
Node
1 3.385000e-07 0.0 1.636000e-07 0.0 0.0 0.0 -1.334000e-07 -2.684000e-07 -0.000022
5 1.926000e-07 0.0 -2.247000e-08 0.0 0.0 0.0 2.315000e-07 -2.684000e-07 -0.000036
推荐阅读
- c++ - 通过引用将派生类传递给运算符会产生错误
- c++ - 丢失的数据包仅在第一次运行时发生
- javascript - Javascript Canvas 中的文本水印
- reactjs - 如何在 React 中保持专注于 Firefox 中的输入字段
- c++ - 如何修复张量流中的“非正常状态:未找到:操作类型未在二进制运行中注册'NoOp'”
- r - data.table setcolorder 的意外行为
- ios - 如何在 ipv6 环境中使用 NEPacketTunnelProvider
- angular - 将 Stripe 3d Secure 与 Ionic 4 集成
- mysql - 是否可以使用 Integer.parseInt 运行 sql 查询语句
- c - 哪种 USB 读取模式更有效:多次读取还是一次大读取?