任务是转换下表
import pandas as pd
import numpy as np
index = pd.date_range('2000-1-1', periods=700, freq='D')
df = pd.DataFrame(np.random.randn(700), index=index, columns=["values"])
df.groupby(by=[df.index.year, df.index.month]).sum()
In[1]: df
Out[1]:
values
2000 1 1.181000
2 -8.005783
3 6.590623
4 -6.266232
5 1.266315
6 0.384050
7 -1.418357
8 -3.132253
9 0.005496
10 -6.646101
11 9.616482
12 3.960872
2001 1 -0.989869
2 -2.845278
3 -1.518746
4 2.984735
5 -2.616795
6 8.360319
7 5.659576
8 0.279863
9 -5.220678
10 5.077400
11 1.332519
看起来像这样
^{pr2}$另外,我还需要添加一个额外的列,它将每年的值相加,如下所示
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Year
2000 1.2 -8.0 6.6 -6.3 1.2 0.4 -1.4 -3.1 0.0 -6.6 9.6 3.9 4.7
2001 -0.9 -2.8 -1.5 3.0 -2.6 8.3 5.7 0.3 -5.2 5.1 1.3 10.7
有没有一个快速的关键方法来解决这个问题?在
你可以这样做:
输出:
唯一的改变是您需要
unstack
将其转换为宽格式。获得整数月份数后,可以通过指定%m
指令作为要考虑的格式,将其转换为datetime
。获得这个之后,使用它通过strftime
的帮助来检索它的字符串表示。在通过指定
axis=1
,计算年份。在在您的
groupby
中使用strftime('%b')
维持月的秩序
^{pr2}$结尾是
'Year'
相关问题 更多 >
编程相关推荐