首页 > 解决方案 > 如何使用熊猫填充与原始数据的子字符串一致的新列单元格的一些数据?

问题描述

有 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

我不知道如何处理这个问题,因为我没有太多使用熊猫的经验。如果你能帮助我,我将非常感谢你。

标签: pythonpandas

解决方案


用于Series.str.extract按列获取可能的字符串Country,然后Series.mapSeries

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

推荐阅读