我有一个相当大的 3D 地图作为数据框(rawDF:1392640 行 x 3 列(名为:“X”、“Y”、“Z”))。我想访问 Y 点并分析相应的 X-Z 轮廓。
我正在使用 pandas (pd) df.loc 函数和 matplotlib.pyplot.plot (plt) 来检查提取的配置文件:
2Dprofile = rawDF.loc[rawDF['Y'] == 2.58]
plt.plot(2Dprofile.X,2Dprofile.Z)
正如预期的那样,效果很好。 2Dprofile 是一个 1360 行 x 3 列的数据帧,Y 列中有重复值 (2.58)。在这种情况下,我可以毫无问题地继续分析。
但是,对于更高的值(在本例中,索引 1358612 到 1359971):
2Dprofile = rawDF.loc[rawDF['Y'] == 2574.84]
plt.plot(2Dprofile.X,2Dprofile.Z)
返回一个空的 2D 配置文件(0 行 x 3 列),并且绘图为空。
此方法针对每个 2D 轮廓循环实现。现在,循环在所有方面都运行良好,但我无法检查发生了什么(查看)具有高 Y 值的配置文件。
我在网上搜索过类似的问题,但没有找到。我尝试强制数据框为“浮动”类型:
rawDF = rawDF.astype(float)
但它不起作用(我认为它一开始就读作浮动)。
我没主意了,我认为问题与 df.loc 函数有关。有谁知道发生了什么事?如果需要,我可以通过电子邮件/链接提供用于测试的数据集。
如果您使用
float
,则 rawDF['Y'] == 2574.84
很可能永远不会成立。你需要例如
profile = rawDF.loc[rawDF['Y'].between(2574.84 - 0.01, 2574.84 + 0.01)]
(或任何您想要的精度)。