Python Pandas DataFrame:按顺序组合列以提供平均值

时间:2018-01-17 08:48:53

标签: python pandas dataframe average

我有一个如下数据框。我希望按顺序组合4列,并使用其平均值的新df。请参阅详细信息。

a = np.random.randint(5, size=(2, 24))
df = pd.DataFrame(a,index=['alpha','bravo'])    

df:
        0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23
alpha   3   0   0   4   4   0   2   2   0   4   2   0   3   4   3   4   3   2   2   3   4   0   0   0
bravo   4   4   4   4   5   2   2   1   4   2   4   0   1   4   3   2   2   3   1   0   3   1   0   0   

理想输出低于

df_new:
        0   4   8   12  16  20 
alpha   3.5 2   3   3.5 2.5 1   
bravo   4   2.5 2.5 2.5 1.5 1   

所以底线是我每个组合4列(按顺序)并给出其值的平均值。是否有一种pythonic方式来做这个而不是写' +'每一栏的迹象?我的实际df要大得多,所以我希望还有其他方法。谢谢!

1 个答案:

答案 0 :(得分:3)

您需要np.arange使用groupby和汇总mean创建的楼层划分数组:

a = np.arange(0, len(df.columns)) // 4 * 4
print (a)
[ 0  0  0  0  4  4  4  4  8  8  8  8 12 12 12 12 16 16 16 16 20 20 20 20]

df = df.groupby(a, axis=1).mean()
print (df)
         0    4    8    12   16   20
alpha  1.75  2.0  1.5  3.5  2.5  1.0
bravo  4.00  2.5  2.5  2.5  1.5  1.0