簡體   English   中英

重命名 pandas dataframe 中的一百個或多個列名

[英]Rename hundred or more column names in pandas dataframe

我正在使用供個人使用的 John Hopkins Covid 數據來創建圖表。 數據按國家/地區顯示累計死亡人數,我想要每天的死亡人數。 在我看來,最簡單的方法是創建兩個數據框並從另一個中減去一個。 但是該文件將列名作為日期和代碼,例如 df3 = df2 - df1 減去具有匹配日期的列。 所以我想用一些簡單的索引重命名所有列,例如,1、2、3,...。

我不知道該怎么做?

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

這會將數據列從 0 向上重命名。

您可以重新塑造數據:使用日期和行標簽,並使用國家、省作為列標簽。

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()到 go 從累積死亡到每日率。 或者,您可以計算 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)將聚合一個國家內的所有省份。

感謝您的時間和精力,但我想出了一個簡單的方法。

對於我,枚舉中的行(df):df.rename(列= {行:str(i)},就地=真)

更改列名,然后

對於我,枚舉中的行(df):df.rename(列= {行:str(i + 43853)},就地=真)

將它們改回我想要的日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM