Pandas:将特定函数应用于列并创建其他列

FaC*_*fee 4 python loops dataframe pandas

我有一个df带有地理坐标的熊猫数据框,如下所示:

    lat         lon         
0   48.01025772 -6.15690851 
1   48.02164841 -6.10588741 
2   48.03302765 -6.05480051 
... ...         ...
Run Code Online (Sandbox Code Playgroud)

我需要将这些坐标转换为不同的系统,并为此提供专用功能。我打算创建两个新列,df['N']这与配对lat,并且df['E']这是搭配lon

函数的外观无关紧要,因此为简单起见,我们将其称为f。该函数的操作如下:E, N = f(float(lat), float(lon))

有没有办法遍历 的所有行df,提取lat,lon对,(计算它们的转换)并将值分配给相关列?

EdC*_*ica 5

您可以apply在 df 和 pass 上使用axis=1,在您的函数中,您应该返回 aSeries并直接分配两列:

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
Run Code Online (Sandbox Code Playgroud)

apply可以并且应该避免使用,这取决于您的功能正在做什么