python - 如何使用熊猫填充与原始数据的子字符串一致的新列单元格的一些数据?
问题描述
有 2 个数据框,它们有相似的数据。
A dataframe
Index Business Address
1 Oils Moskva, Russia
2 Foods Tokyo, Japan
3 IT California, USA
... etc.
B dataframe
Index Country Country Calling Codes
1 USA +1
2 Egypt +20
3 Russia +7
4 Korea +82
5 Japan +81
... etc.
我还将在 A 数据框中添加一个名为“国家呼叫代码”的列。
之后,B 数据框中的“国家”列将与“地址”列的数据进行比较。如果“A.Address”字符串包含“B.Country”字符串,则“B.Country Calling Codes”将插入到比较行的“A.Country Calling Codes”中。
结果是:
Index Business Address Country Calling Codes
1 Oils Moskva, Russia +7
2 Foods Tokyo, Japan +81
3 IT California, USA +1
我不知道如何处理这个问题,因为我没有太多使用熊猫的经验。如果你能帮助我,我将非常感谢你。
解决方案
用于Series.str.extract
按列获取可能的字符串Country
,然后Series.map
按Series
:
d = B.drop_duplicates('Country').set_index('Country')['Country Calling Codes']
s = A['Address'].str.extract(f'({"|".join(d.keys())})', expand=False)
A['Country Calling Codes'] = s.map(d)
print (A)
Index Business Address Country Calling Codes
0 1 Oils Moskva, Russia +7
1 2 Foods Tokyo, Japan +81
2 3 IT California, USA +1
详情:
print (A['Address'].str.extract(f'({"|".join(d.keys())})', expand=False))
0 Russia
1 Japan
2 USA
Name: Address, dtype: object
推荐阅读
- html - 删除对象标签周围的白色边框
- vba - 使用宏 VBA 更新单元格值
- css - 无法在 DataTables 中使用 css 修复行边框
- apache-beam - 为什么在本地机器上运行 apache Beam 时出现属性错误?
- git - 如何忽略 Git LFS 无法找到源
- ios - AudioKit 崩溃:所需条件为假:!destNodeMixerConns.empty() && !isDestNodeConnectedToIONode
- xamarin - 我可以使用 BindableProperty 在我的 Xamarin ContentView 自定义控件中禁用按钮吗?
- android - 用于轮询数据的 Rxjava2 单元测试失败
- java - 从 WMS 请求地图并将其作为 PNG 图像保存到磁盘
- r - nchar(Tony.raw$neighborhood_overview) 中的错误:“nchar()”需要字符向量