Python 基于部分匹配的国家名称连接两个数据帧
目前,我有两个数据帧,如下所示: 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.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中但不在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