我有一个如下数据框。我希望按顺序组合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要大得多,所以我希望还有其他方法。谢谢!
答案 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