python pandas df.loc 函数是否受数据帧大小的限制?它适用于小索引,但不适用于大索引

问题描述 投票:0回答:1

我有一个相当大的 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 函数有关。有谁知道发生了什么事?如果需要,我可以通过电子邮件/链接提供用于测试的数据集。

python pandas bigdata 3d-mapping
1个回答
0
投票

如果您使用

float
,则
rawDF['Y'] == 2574.84
很可能永远不会成立。你需要例如

profile = rawDF.loc[rawDF['Y'].between(2574.84 - 0.01, 2574.84 + 0.01)]

(或任何您想要的精度)。

© www.soinside.com 2019 - 2024. All rights reserved.