gpt4 book ai didi

python - 将长数据透视/转置为以月为列、以年为行的结果

转载 作者:行者123 更新时间:2023-12-01 07:37:20 29 4
gpt4 key购买 nike

我想知道 python/pandas 中是否有一种很好的干净方法来将长数据表旋转/转置为将 1 月到 12 月作为列、年份作为行的结果,类似于下图。

enter image description here

我首先向一个非常好的示例数据集添加了“月”和“年”列,但现在我不确定解决此任务的最有效方法。

import pandas as pd

data = pd.read_csv("https://fred.stlouisfed.org/graph/fredgraph.csv?bgcolor=%23e1e9f0&chart_type=line&drp=0&fo=open%20sans&graph_bgcolor=%23ffffff&height=450&mode=fred&recession_bars=on&txtcolor=%23444444&ts=12&tts=12&width=1168&nt=0&thu=0&trc=0&show_legend=yes&show_axis_titles=yes&show_tooltip=yes&id=FEDFUNDS&scale=left&cosd=1954-07-01&coed=2019-06-01&line_color=%234572a7&link_values=false&line_style=solid&mark_type=none&mw=3&lw=2&ost=-99999&oet=99999&mma=0&fml=a&fq=Monthly&fam=avg&fgst=lin&fgsnd=2009-06-01&line_index=1&transformation=lin&vintage_date=2019-07-08&revision_date=2019-07-08&nd=1954-07-01")

data['DATE'] = pd.to_datetime(data['DATE'], format='%Y-%m-%d')
data['month'] = pd.DatetimeIndex(data['DATE']).month
data['year'] = pd.DatetimeIndex(data['DATE']).year

有什么想法请提出来

最佳答案

最简单的是DataFrame.pivot如果不需要月份名称:

data = data.pivot('year','month','FEDFUNDS')

可以按顺序 categorical 创建预期顺序的月份与 Series.dt.month_name :

cats = ['January','February','March','April','May','June',
'July','August','September','October','November','December']
data['month'] = pd.CategoricalIndex(data['DATE'].dt.month_name(),ordered=True, categories=cats)
data['year'] = data['DATE'].dt.year

data = data.pivot('year','month','FEDFUNDS')

或者通过enumerate创建的字典重命名列名称:

cats = ['January','February','March','April','May','June',
'July','August','September','October','November','December']
data['month'] = data['DATE'].dt.month
data['year'] = data['DATE'].dt.year

data = data.pivot('year','month','FEDFUNDS').rename(columns=dict(enumerate(cats, 1)))

关于python - 将长数据透视/转置为以月为列、以年为行的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56928913/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com