重命名dataframe中的100个或更多列名

2024-05-29 03:00:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用约翰·霍普金斯的新冠病毒数据来制作图表。数据显示了各个国家的累计死亡人数,我想要每天的死亡人数。在我看来,最简单的方法是创建两个数据帧,然后从另一个数据帧中减去一个数据帧。但是文件的列名是日期,代码是df3=df2-df1,用匹配的日期减去列。所以我想用一些简单的索引重命名所有列,例如,1,2,3

我不知道怎么做


Tags: 文件数据方法代码图表国家重命名df1
3条回答

您可以重新设置数据的形状:使用日期和行标签,并使用国家、省作为列标签

import pandas as pd

covid_csv = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv'

df_raw = (pd.read_csv(covid_csv)
          .set_index(['Country/Region', 'Province/State'])
          .drop(columns=['Lat', 'Long'])
          .transpose())

df_raw.index = pd.to_datetime(df_raw.index)

print( df_raw.iloc[-5:, 0:5] )

Country/Region Afghanistan Albania Algeria Andorra Angola
Province/State         NaN     NaN     NaN     NaN    NaN
2020-07-27            1269     144    1163      52     41
2020-07-28            1270     148    1174      52     47
2020-07-29            1271     150    1186      52     48
2020-07-30            1271     154    1200      52     51
2020-07-31            1272     157    1210      52     52

现在,您可以使用丰富的pandas工具集进行时间序列分析。例如,使用diff()将累计死亡数转换为每日死亡率。或者,你可以计算N天移动平均数,创建时间序列图

print(df_raw.diff().iloc[-5:, 0:5])

Country/Region Afghanistan Albania Algeria Andorra Angola
Province/State         NaN     NaN     NaN     NaN    NaN
2020-07-27            10.0     6.0     8.0     0.0    1.0
2020-07-28             1.0     4.0    11.0     0.0    6.0
2020-07-29             1.0     2.0    12.0     0.0    1.0
2020-07-30             0.0     4.0    14.0     0.0    3.0
2020-07-31             1.0     3.0    10.0     0.0    1.0

最后,df_raw.sum(level='Country/Region', axis=1)将一个国家内的所有省份汇总

new_names=list(range(data.shape[1]))
data.columns=new_names

这将从0向上重命名数据列

谢谢你的时间和努力,但我想出了一个简单的方法

对于i,枚举中的行(df): rename(columns={row:str(i)},inplace=True)

更改列名称,然后

对于i,枚举中的行(df): rename(columns={row:str(i+43853)},inplace=True)

把它们改回我想要的日期

相关问题 更多 >

    热门问题