python - Pandas:如何将 Dataframe 的值映射到另一个 Dataframe?
问题描述
我对 Python 完全陌生,只是在学习一些我拥有的用例。
我有 2 个数据框,一个是我需要 Country 列中的值的地方,另一个是在名为“Countries”的列中的值,需要在主数据框中映射名为“Data”的列。(如果这个问题已经回答,请接受我的道歉)
以下是主要数据框:
Name Data | Country
----------------------------- | ---------
Arjun Kumar Reddy las Vegas |
Divya london Khosla |
new delhi Pragati Kumari |
Will London Turner |
Joseph Mascurenus Bombay |
Jason New York Bourne |
New york Vice Roy |
Joseph Mascurenus new York |
Peter Parker California |
Bruce (istanbul) Wayne |
下面是引用的DataFrame:
Data | Countries
-------------- | ---------
las Vegas | US
london | UK
New Delhi | IN
London | UK
bombay | IN
New York | US
New york | US
new York | US
California | US
istanbul | TR
Moscow | RS
Cape Town | SA
我想要的结果如下所示:
Name Data | Country
----------------------------- | ---------
Arjun Kumar Reddy las Vegas | US
Divya london Khosla | UK
new delhi Pragati Kumari | IN
Will London Turner | UK
Joseph Mascurenus Bombay | IN
Jason New York Bourne | US
New york Vice Roy | US
Joseph Mascurenus new York | US
Peter Parker California | US
Bruce (istanbul) Wayne | TR
请注意,两个数据框的大小都不相同。我虽然使用 map 或 Fuzzywuzzy 方法,但无法真正达到结果。
解决方案
在参考数据框中找到匹配的国家/地区键并提取它。
regex = '(' + ')|('.join(ref_df['Data']) + ')'
df['key'] = df['Name Data'].str.extract(regex, flags=re.I).bfill(axis=1)[0]
>>> df
Name Data key
0 Arjun Kumar Reddy las Vegas las Vegas
1 Bruce (istanbul) Wayne istanbul
2 Joseph Mascurenus new York new York
>>> ref_df
Data Country
0 las Vegas US
1 new York US
2 istanbul TR
合并提取的密钥上的两个数据帧。
pd.merge(df, ref_df, left_on='key', right_on='Data')
Name Data key Data Country
0 Arjun Kumar Reddy las Vegas las Vegas las Vegas US
1 Bruce (istanbul) Wayne istanbul istanbul TR
2 Joseph Mascurenus new York new York new York US
推荐阅读
- javascript - Discord bot:ReferenceError:未定义时刻
- swift - Playground 中没有这样的模块“SPCCore”。等效模块在哪里?
- visual-studio-code - 如何在 Windows 上的 VS Code 中使变量在侧边栏中可见
- makefile - Graphviz 使用 Makefile 未定义对“_imp__agread”的引用
- python - GA 交易和项目与 Python
- postgresql - Liquibase 变更集无法重新运行
- r - 向数据框添加列以显示该行中的元素是否在 R 中的某个列表中
- python - 将浮点数组规范化到一定范围内,并在 Python 中保持符号
- image - 如何将预处理后的图像写入 kaggle 输出
- numeric - 为什么 IEEE-754 中的偏差是 127 和 1023?