Python 如何转换数据帧

Python 如何转换数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,如下所示:- import pandas as pd import numpy as np from datetime import datetime start = datetime(2011, 1, 1) end = datetime(2012, 1, 1) index = pd.date_range(start, end) Cols = ['Returns'] df = pd.DataFrame(abs(np.random.randn(366,1)), ind

我有一个熊猫数据框,如下所示:-

import pandas as pd
import numpy as np
from datetime import datetime
start = datetime(2011, 1, 1)
end = datetime(2012, 1, 1)

index = pd.date_range(start, end)

Cols = ['Returns']



df = pd.DataFrame(abs(np.random.randn(366,1)), index=index, columns=Cols)
start1 = 2011
end1 = 2012

index1 = (start, end)
cols2=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
df_out = pd.DataFrame(abs(np.random.randn(2,12)), index=index1, columns=cols2)
DFList = []
for group in df.groupby(df.index.month):
    DFList.append(group[1])


r2 = pd.concat([DFList[0], DFList[1] ,DFList[2], DFList[3], DFList[4], 
DFList[5],DFList[6],DFList[7],DFList[8], DFList[9], 
DFList[10],DFList[11]],ignore_index=True,axis=1)
cols2=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
r2.columns=cols2
我需要以这样一种方式对它进行转换:索引是年,列是月。预期产出如下:-

import pandas as pd
import numpy as np
from datetime import datetime
start = datetime(2011, 1, 1)
end = datetime(2012, 1, 1)

index = pd.date_range(start, end)

Cols = ['Returns']



df = pd.DataFrame(abs(np.random.randn(366,1)), index=index, columns=Cols)
start1 = 2011
end1 = 2012

index1 = (start, end)
cols2=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
df_out = pd.DataFrame(abs(np.random.randn(2,12)), index=index1, columns=cols2)
DFList = []
for group in df.groupby(df.index.month):
    DFList.append(group[1])


r2 = pd.concat([DFList[0], DFList[1] ,DFList[2], DFList[3], DFList[4], 
DFList[5],DFList[6],DFList[7],DFList[8], DFList[9], 
DFList[10],DFList[11]],ignore_index=True,axis=1)
cols2=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
r2.columns=cols2
每年的单个值可以是总和或平均值。 我尝试了dataframe groupby,如下所示:-

import pandas as pd
import numpy as np
from datetime import datetime
start = datetime(2011, 1, 1)
end = datetime(2012, 1, 1)

index = pd.date_range(start, end)

Cols = ['Returns']



df = pd.DataFrame(abs(np.random.randn(366,1)), index=index, columns=Cols)
start1 = 2011
end1 = 2012

index1 = (start, end)
cols2=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
df_out = pd.DataFrame(abs(np.random.randn(2,12)), index=index1, columns=cols2)
DFList = []
for group in df.groupby(df.index.month):
    DFList.append(group[1])


r2 = pd.concat([DFList[0], DFList[1] ,DFList[2], DFList[3], DFList[4], 
DFList[5],DFList[6],DFList[7],DFList[8], DFList[9], 
DFList[10],DFList[11]],ignore_index=True,axis=1)
cols2=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
r2.columns=cols2
我在这一点上感到困惑,无法继续下去。 提前感谢你。请建议前进的方向。

与一起使用指定聚合函数和 :

如果需要
month
以正确的顺序命名一个解决方案,其中包含已订购的和:

另一个解决方案是使用: