使用Pandas处理COVID确诊CSV数据 将日期列转为行、国家列为列
解决方案
你已经完成了长表转换的步骤,后续只需要先合并同国家同日期的确诊数据,再做宽表转换即可,具体操作如下:
方法1:基于你现有已生成的df_piv继续处理
由于原数据中部分国家存在多条省级拆分数据,需要先按国家和日期聚合总确诊数,再通过pivot转成目标结构:
# 1. 聚合同一国家同一日期的累计确诊数 df_agg = df_piv.groupby(['Country/Region', 'Date'], as_index=False)['Value'].sum() # 2. 转换为以Date为索引、国家为列的宽表 df_target = df_agg.pivot(index='Date', columns='Country/Region', values='Value').reset_index() # 3. 可选操作:移除列名的层级标识,输出更整洁 df_target.columns.name = None
处理完成后df_target就是你需要的结构。
方法2:更简便的省略melt步骤的写法
你也可以直接跳过melt步骤,通过设置索引转置直接得到结果,代码更简洁:
import pandas as pd url_confirmed = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv' df = pd.read_csv(url_confirmed) # 移除不需要的列 df = df.drop(columns=['Province/State','Lat','Long'],axis=1) # 按国家聚合后直接转置 df_target = df.groupby('Country/Region').sum().T.reset_index().rename(columns={'index':'Date'}) df_target.columns.name = None
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

