我有一个 Pandas 数据框df,地理坐标如下:
lat lon
0 48.01025772 -6.15690851
1 48.02164841 -6.10588741
2 48.03302765 -6.05480051
... ... ...
我需要将这些坐标转换成不同的系统,并且为此有专门的功能。我计划创建两个新列,df['N'] 与 lat 配对,df['E'] 是与 lon 配对。
函数的外观无关紧要,因此为简单起见,我们称它为f。该函数的运行方式如下:E, N = f(float(lat), float(lon))
有没有一种方法可以遍历 df 的所有行,提取 lat,lon 对(计算它们的转换)并将值分配给相关列?
请您参考如下方法:
您可以使用 apply在 df 上并传递 axis=1,在您的函数中您应该返回一个 Series 并直接分配 2 列:
In [207]:
def foo(lat, lon):
return pd.Series([lat + 10, lon * 100])
df[['new_lat','new_lon']] = df.apply(lambda x: foo(x['lat'], x['lon']), axis=1)
df
Out[207]:
lat lon new_lat new_lon
0 48.010258 -6.156909 58.010258 -615.6909
1 48.021648 -6.105887 58.021648 -610.5887
2 48.033028 -6.054801 58.033028 -605.4801
根据您的函数正在做什么,可以而且应该避免使用 apply
