gpt4 book ai didi

python - 通过比较不同数据框中的其他两列来创建新的数据框列

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

我有一个DataFrame其中包含 Alpha 2 国家/地区代码(UK、ES、SL 等),我需要这些作为国家/地区名称。我创建了第二个数据框,其中一列中包含所有 Alpha 2 国家/地区代码,另一列中包含相应的名称。

我尝试比较这两列,然后使用索引创建新列。然而,我在不使用循环的情况下努力做到这一点。我觉得有一种更有效的方法可以在不循环的情况下做到这一点?

我尝试使用 for 循环,迭代:

cube_data = pd.DataFrame({'Country Code':['UK','ES','SL']})
alpha2 = pd.DataFrame({'Code':['ES','GH','UK','SL'],
'Name':['Spain','Ghana','United Kingdom','Sierra Leone']})
cube_data
Country Code
0 UK
1 ES
2 SL

alpha2
Code Name
0 ES Spain
1 GH Ghana
2 UK United Kingdom
3 SL Sierra Leone

我使用了 for 循环来迭代列,当代码来自 cube_data 时位于 alpha2['Code']该索引用于创建一个新系列,其中 alpha['Name']位于与cube_data对应的正确位置。

最终结果是:

cube_data
Country Code Name
0 UK United Kingdom
1 ES Spain
2 SL Sierra Leone

当然有更好的方法可以在不循环的情况下做到这一点吗?我看过series.isin()series.map()但这些似乎没有提供我需要的结果。

这可以在没有循环的情况下完成吗?

最佳答案

您可以使用 pandas merge :

df = alpha2.merge(cube_data, left_on='Code', right_on='Country Code', how='inner').drop('Code', axis=1)

merge 的工作方式类似于 SQL 连接:这里我们将 alpha2cube_data 合并。我们使用 alpha2 中的 'Code' 列和 cube_data 中的 'Country Code' 将两个数据帧合并在一起并使用 'inner' join 逻辑,这意味着仅保留两个数据帧中存在的值。最后,我们从 alpha2删除'Code',该列包含与'Country Code'列相同的值

关于python - 通过比较不同数据框中的其他两列来创建新的数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197346/

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