使用一个.map调用,使用一个字典更改数据框中多个系列/列的值

Ale*_*Gao 2 python series pandas

如果我有这样的数据帧:

id latitude longitude
 a      -99        48
 b      -97        44
 c      -96        52
Run Code Online (Sandbox Code Playgroud)

我有一个字典映射ids到新的纬度+经度值

new_lat_lon = { 'a':(-99, 58), 'b':(...), 'c':(...) }
Run Code Online (Sandbox Code Playgroud)

是否有一种快速而肮脏的方法来使用.map立即更改纬度/经度列?

例如

df[['latitude', 'longitude']] = df['id'].map(new_lat_lon)
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,但如果有一种我想知道的方式.我知道我可以简单地将字典分成两个单独的字典,但是如果有更紧凑的解决方案,我感兴趣.如果我需要稍微修改字典(例如将元组更改为列表或其他东西),这也很酷,只要它是一个字典.谢谢!

WeN*_*Ben 5

运用 update

pd.DataFrame.from_dict(new_lat_lon,'index').rename(columns={0:'latitude',1:'longitude'})
Out[128]: 
   latitude  longitude
a       -99         58
b         1          2
c         2          3
updateddf=pd.DataFrame.from_dict(new_lat_lon,'index').rename(columns={0:'latitude',1:'longitude'})
df=df.set_index('id')
df.update(updateddf)
df.reset_index()
Out[132]: 
  id  latitude  longitude
0  a       -99         58
1  b         1          2
2  c         2          3
Run Code Online (Sandbox Code Playgroud)