如何迭代 pandas 列中的值

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

我正在开发一个项目,需要将一组坐标转换为另一组坐标(从 CRS 229 到 CRS 3857),并且我有一个函数可以在您输入前一个坐标时起作用,但我想这样做我可以在整个列(有 X、Y 和 XY 列)上运行该函数。

这就是代码的样子

from pyproj import Proj, transform, CRS,  Transformer
import pandas as pd
import geopandas as gpd
crs_2229 = CRS.from_epsg(2229)
crs_3857 = CRS.from_epsg(3857)
transformer = Transformer.from_crs(crs_2229, crs_3857)

data = {'X': [6481427.400, 6485873.280],
        'Y': [1797333.200, 1796834.811],
        'XY':[(6481427.400000006,1797333.200000003),(6485873.279835222,1796834.811359349)]}

df = pd.DataFrame(data)

现在如果我运行这个

transformer.transform(6481427.400000006,1797333.200000003)

它带有(-13165144.971136427, 4019524.5726486626)的正确转换。但我怎样才能让它更加自动化呢?

尝试了 lambda 函数,但它作为键值错误不断上升。 试图创建一个 for 循环,但这没有给我任何东西。 在网上搜索功能,但他们没有工作,现在使用谷歌colabs AI工具,它给了我相同的代码,我会尝试作为建议,但他们从来没有工作过。

python pandas gis esri
1个回答
0
投票

您可以使用:

df['xy_t'] = transformer.transform(df['X'], df['Y'])

这给出了新的专栏:

0    [-13165144.971136427, -13163513.038053121]
1      [4019524.5726486607, 4019345.0283058006]
© www.soinside.com 2019 - 2024. All rights reserved.