首页 > 解决方案 > Pandas Dataframes:当行包含不同国家/地区时,组合来自两个全球数据集的列

问题描述

我的问题是这两个 CSV 文件在不同的行有不同的国家,所以我不能只是将有问题的列附加到另一个数据框中。

https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv

https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv

我试图想出某种方法来使用 for 循环,检查每一行,并将恢复的案例添加到正确的行,其中国家名称在两个数据框中都相同,但我不知道如何放置想法进入代码。帮助?

标签: pythonpandas

解决方案


您可以通过以下几种方式做到这一点:

选项 1:pd.concatset_index

pd.concat([df_confirmed.set_index(['Province/State', 'Country/Region']),
          df_recovered.set_index(['Province/State', 'Country/Region'])],
         axis=1, keys=['Confirmed', 'Recovered'])

选项 2:pd.DataFrame.merge与使用how参数的左连接或外连接一起使用

df_confirmed.merge(df_recovered, on=['Province/State', 'Country/Region'], how='left', 
                   suffixes=('_confirmed','_recovered'))

使用来自 github 原始格式的 pd.read_csv:

df_recovered = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv')

df_confirmed = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')

推荐阅读