我有一个包含点的geopandas数据帧
df:
geometry
0 POINT (806470.3646198167 2064879.919354021)
1 POINT (792603.391127742 2170760.8355139)
2 POINT (787263.3037740411 2050925.953643546)
3 POINT (809203.6762813283 2160874.194588484)
4 POINT (781668.2687635225 2051524.634389534)
对于每一点,我想应用这个函数:
^{pr2}$我要做的是:
for i in df.index:
val = returnValuePoints(df, data, i)
如何避免循环,并将此函数应用于具有apply()
的所有行
我给你举个例子。在
关于以下代码的警告:我还没有实际测试过它,因为我无法访问geopandas环境。不过,我想应该行得通。在
我不认为你真的想在这里用申请表。使用geopandas方法,可以通过应用一些仿射变换来获得geopandas
GeoSeries
点: 首先,translate
通过xOrigin, yOrigin
得到一系列点:然后,你可以用
^{pr2}$pixelWidth, pixelHeight
和scale
对x轴进行反射和缩放:这里乘以-1就是反射。如果您想做
(point[1] - yOrigin)
,那么可以用1替换-1。在这将给您一个
^{3}$GeoSeries
。如果你想要一系列的整数点对,你需要做更多的工作。下面的代码将为您提供两个带有x和y值的整数Series
(geopandas version>;0.3.0必需):然后,你可以,比方说,把它们放在原始数据框中:
如果你真的想要一个元组列表(我想你不应该!你失去了熊猫的所有优势!)您可以:
首先,您需要重新构造方法,使其获得可以在apply中使用lambda函数传递的值(想想您希望如何对单个行的值进行操作):
其次,可以使用axis=1对dataframe调用apply,以便能够访问每行的列值:
^{pr2}$相关问题 更多 >
编程相关推荐