gpt4 book ai didi

python - 合并两个数据框并保留唯一列

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:15 24 4
gpt4 key购买 nike

我有这两个数据框:

第一个 df

#df1 -----

location Ethnic Origins Percent(1)
0 Beaches-East York English 18.9
1 Davenport Portuguese 22.7
2 Eglinton-Lawrence Polish 12.0

第二个df

 #df2 -----

location lat lng
0 Beaches—East York, Old Toronto, Toronto, Golde... 43.681470 -79.306021
1 Davenport, Old Toronto, Toronto, Golden Horses... 43.671561 -79.448293
2 Eglinton—Lawrence, North York, Toronto, Golden... 43.719265 -79.429765

预期输出:

我想使用 #df1 的位置列,因为它更干净并保留所有其他列。我不需要位置栏中的城市、国家/地区 信息。

    location            Ethnic Origins   Percent(1)  lat       lng
0 Beaches-East York English 18.9 43.681470 -79.306021
1 Davenport Portuguese 22.7 43.671561 -79.448293
2 Eglinton-Lawrence Polish 12.0 43.719265 -79.429765

我尝试了几种方法来合并它们,但都无济于事。

这会为所有纬度和经度行返回一个 NaN

df3 = pd.merge(df1, df2, on="location", how="left")

这会为所有 Ethnic 和 Percent 行返回一个 NaN

df3 = pd.merge(df1, df2, on="location", how="right")

最佳答案

正如其他人所指出的,问题在于“位置”列不共享任何值。一个解决方案是使用正则表达式去除以第一个逗号开始并延伸到字符串末尾的所有内容:

df2.location = df2.location.replace(r',.*', '', regex=True)

使用您提供的确切数据仍然行不通,因为您在两个数据框中有不同种类的破折号。您可以用类似的方式解决这个问题(这次不需要正则表达式):

df2.location = df2.location.replace('—', '-')

然后按照你的建议合并

df3 = pd.merge(df1, df2, on="location", how="left")

关于python - 合并两个数据框并保留唯一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58156656/

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