【发布时间】:2021-01-09 02:58:19
【问题描述】:
我在表格中有一个坐标列表
| X | Y | Z |
|---|---|---|
| X1 | Y1 | Z (X1,Y1) |
| X1 | Y2 | Z (X1,Y2) |
| ... | ... | ... |
| X1 | YN | Z (X1,YN) |
| X2 | Y1 | Z (X2,Y1) |
| X2 | Y2 | Z (X2,Y1) |
| ... | ... | ... |
| XN | YN | Z (XN,YN) |
我需要这样做,因为 Z 的功能很挑剔。
Matplot lib 需要 Z 值是一个二维数组。我想重新排列表格,以便:
| Y1 | Y2 | ... | YN | |
|---|---|---|---|---|
| X1 | X(X1,Y1) | Z(X1, Y2) | ... | Z(X1, YN) |
| X2 | Z(X2, Y1) | Z(X2, Y2) | ... | Z(X2, YN) |
| ... | ... | ... | ... | ... |
| XN | Z(XN, Y1) | Z(XN, Y2) | ... | Z(XN, YN) |
我在 Pandas 中尝试了一些枢轴选项,但没有运气。遍历表被证明是不可靠的。
我迷路了,请帮忙。
编辑: `plotable_table = table.pivot(index = 'X', columns = 'Y', values = 'Z') 返回一些奇怪的东西。不幸的是 table 是 3 x 230 而 plotable_table 是 23 x 142.... 它应该是 23 x 10
表格是:
X Y Z
0 10000 0.0 0.0
1 10000 1000.0 -200.6
2 10000 2000.0 -401.2
3 10000 3000.0 -601.8
4 10000 4000.0 -802.4
.. ... ... ...
225 230000 115000.0 -9050.5
226 230000 138000.0 -26726.0
227 230000 161000.0 -56028.0
228 230000 184000.0 -66562.0
229 230000 207000.0 -77096.0
[230 rows x 3 columns]
可绘制的表格是:
Y 0.0 1000.0 2000.0 ... 189000.0 198000.0 207000.0
X ...
10000 0.0 -200.6 -401.2 ... NaN NaN NaN
20000 0.0 NaN -401.2 ... NaN NaN NaN
30000 0.0 NaN NaN ... NaN NaN NaN
40000 0.0 NaN NaN ... NaN NaN NaN
50000 4070.0 NaN NaN ... NaN NaN NaN
60000 4884.0 NaN NaN ... NaN NaN NaN
70000 5698.0 NaN NaN ... NaN NaN NaN
80000 6512.0 NaN NaN ... NaN NaN NaN
90000 9846.0 NaN NaN ... NaN NaN NaN
100000 18230.0 NaN NaN ... NaN NaN NaN
110000 20053.0 NaN NaN ... NaN NaN NaN
120000 24768.0 NaN NaN ... NaN NaN NaN
130000 26832.0 NaN NaN ... NaN NaN NaN
140000 28896.0 NaN NaN ... NaN NaN NaN
150000 30960.0 NaN NaN ... NaN NaN NaN
160000 41184.0 NaN NaN ... NaN NaN NaN
170000 43758.0 NaN NaN ... NaN NaN NaN
180000 46332.0 NaN NaN ... NaN NaN NaN
190000 48906.0 NaN NaN ... NaN NaN NaN
200000 51480.0 NaN NaN ... NaN NaN NaN
210000 54054.0 NaN NaN ... -86562.0 NaN NaN
220000 73568.0 NaN NaN ... NaN -73744.0 NaN
230000 76912.0 NaN NaN ... NaN NaN -77096.0
[23 rows x 142 columns]
【问题讨论】:
-
第一张桌子很混乱。
-
我不理解您在所需输出中的模式。除了 Y1 列中的 X(X1,Y1) 之外,这一切似乎都是 z 的函数。这与其余数据的匹配度如何。
-
我假设您正在寻找
df.pivot(index='X', columns='Y', values='Z') -
试试
df.pivot(index='foo', columns='bar', values='Z') -
@FLAV10 你应该使用 Chris 提供的 sintax,而不是像你展示的那样使用整数