gpt4 book ai didi

python - 通过另一个 DataFrame 中的行将新列映射到 DataFrame

转载 作者:行者123 更新时间:2023-12-01 08:41:54 26 4
gpt4 key购买 nike

我有一个 Pandas DataFrame stations,索引为 id:

id    station     lat     lng
1 Boston 45.343 -45.333
2 New York 56.444 -35.690

我有另一个 DataFrame df1 ,它具有以下内容:

duration   date       station   gender
NaN 20181118 NaN M
9 20181009 2.0 F
8 20170605 1.0 F

我想添加到 df1 ,使其看起来像以下 DataFrame:

duration   date       station   gender  lat     lng 
NaN 20181118 NaN M nan nan
9 20181009 New York F 56.444 -35.690
8 20170605 Boston F 45.343 -45.333

我尝试通过引用 station.iloc[] 迭代执行此操作,如以下示例所示,但我有大约 200 万行,最终花费了很多时间。

stat_list = []    
lng_list []
lat_list = []
for stat in df1:
if not np.isnan(stat):
ref = station.iloc[stat]
stat_list.append(ref.station)
lng_list.append(ref.lng)
lat_list.append(ref.lat)
else:
stat_list.append(np.nan)
lng_list.append(np.nan)
lat_list.append(np.nan)

有没有更快的方法来做到这一点?

最佳答案

看起来这个问题最好通过合并来解决,这应该会显着提高性能:

df1.merge(stations, left_on="station", right_index=True, how="left")

如果您只想要包含字符串名称的电台列,那么这将为您留下两列 station_xstation_y:

df_merged = df1.merge(stations, left_on="station", right_index=True, how="left", suffixes=("_x", ""))
df_final = df_merged[df_merged.columns.difference(["station_x"])]

(或者在合并之前重命名其中一个)

关于python - 通过另一个 DataFrame 中的行将新列映射到 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53466038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com