我有以下数据集,我想做一些重大调整(以某种方式对数据进行枢轴)。(这一天一直持续到12月,只是出于方便的原因没有包括在内)
输入:
Series ID View Description Jan-10 Feb-10 Mar-10 Apr-10
Food 12-Month Percent Change 219.98 210.98 205 202
Drinks Original Data Value 215.46 205.04 206 203
Food at Home Original Data Value 202.88 203 207 199.98 期望产出:
Series ID View Description Month Year Value
Food 12-Month Percent Change January 2010 219.98
Food 12-Month Percent Change February 2010 210.98
Food 12-Month Percent Change March 2010 205
Food 12-Month Percent Change April 2010 202
Drinks Original Data Value January 2010 215.45
Drinks Original Data Value February 2010 205.04
Drinks Original Data Value March 2010 206
Drinks Original Data Value April 2010 203
Food at Home Original Data Value January 2010 202.88
Food at Home Original Data Value February 2010 203
Food at Home Original Data Value March 2010 207
Food at Home Original Data Value April 2010 199.98注意:实际上,这些数据包括所有12个月的数据,而且年份列也应该能够采用任何值。任何建议都是非常感谢的!
发布于 2022-08-16 18:57:22
这里有一种方法。使用熔融将DF堆栈,排序,然后将日期拆分为年份和月份。
df2=df.melt(id_vars=['Series ID','View Description' ],
var_name='date',
value_name='value'
).sort_values(['View Description','Series ID'])
df2['year']=pd.to_datetime(df2['date'],format='%b-%y').dt.year
df2['month']=pd.to_datetime(df2['date'],format='%b-%y').dt.month_name()
df2.drop(columns='date', inplace=True)
df2 Series ID View Description value year month
0 Food 12-Month Percent Change 219.98 2010 January
3 Food 12-Month Percent Change 210.98 2010 February
6 Food 12-Month Percent Change 205.00 2010 March
9 Food 12-Month Percent Change 202.00 2010 April
1 Drinks Original Data Value 215.46 2010 January
4 Drinks Original Data Value 205.04 2010 February
7 Drinks Original Data Value 206.00 2010 March
10 Drinks Original Data Value 203.00 2010 April
2 Food at Home Original Data Value 202.88 2010 January
5 Food at Home Original Data Value 203.00 2010 February
8 Food at Home Original Data Value 207.00 2010 March
11 Food at Home Original Data Value 199.98 2010 Aprilhttps://stackoverflow.com/questions/73378855
复制相似问题