Python 基于部分匹配的国家名称连接两个数据帧

Python 基于部分匹配的国家名称连接两个数据帧,python,pandas,dataframe,merge,fuzzywuzzy,Python,Pandas,Dataframe,Merge,Fuzzywuzzy,目前,我有两个数据帧,如下所示: DF1: 日期 国家 A. B C 01/01/2020 美国 0 1. 5. 01/02/2020 美国 2. 5. 0 01/03/2020 美国 1. 4. 1. ... ... ... ... ... 01/01/2020 大韩民国 2. 3. 7. 01/02/2020 大韩民国 4. 5. 6. 您可以创建df1中但不在df2中的国家列表,如下所示: new_list=[] for country in df1.country.tolist():

目前,我有两个数据帧,如下所示:

DF1:

日期 国家 A. B C 01/01/2020 美国 0 1. 5. 01/02/2020 美国 2. 5. 0 01/03/2020 美国 1. 4. 1. ... ... ... ... ... 01/01/2020 大韩民国 2. 3. 7. 01/02/2020 大韩民国 4. 5. 6.
您可以创建df1中但不在df2中的国家列表,如下所示:

new_list=[]
for country in df1.country.tolist():
    if country not in df2.country.tolist():
        new_list.append(country)
        
new_list
因此,您需要更改df2中国家的名称。您可以通过创建一个包含新列表中国家/地区的词典来实现这一点

dict={"United States of America":"The United States","Republic of Korea","South Korea"}
df2["Country"].replace(dict, inplace=True)
你可以试一试,但请记住,它可能不适用于所有情况

# pip install fuzzymatcher
from fuzzymatcher import link_table, fuzzy_left_join

merge_df = fuzzy_left_join(df, df1, ["Country", "Date"], ["Country", "Date"])
merge_df = merge_df[["Date_left", "Country_left", "A", "B", "C", "D"]]

    Date_left   Country_left        A   B   C   D
0   01/01/2020  The United States   0   1   5   9.0
3   01/02/2020  The United States   2   5   0   9.1
4   01/03/2020  The United States   1   4   1   9.4
5   01/01/2020  Republic of Korea   2   3   7   2.1
10  01/02/2020  Republic of Korea   4   5   6   2.5