Python DataFrame:组合列以提供平均值
我有一个如下的数据帧。我想按顺序组合4列,并用其值的平均值创建新的df。详情请参阅Python DataFrame:组合列以提供平均值,python,pandas,dataframe,average,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
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要大得多,所以我希望有其他方法。谢谢 您需要使用groupby和aggregate
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
您需要使用groupby和aggregate
mean
,由np.arange
创建地板分割数组:
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
顺便说一下,列名将被重命名,因此只要按顺序组合,列名就不必按0,4,8,12,16,20的顺序排列。谢谢顺便说一下,列名将被重命名,因此只要按顺序组合,列名就不必按0,4,8,12,16,20的顺序排列。谢谢哇,这么简单?你能解释一下//4是什么意思吗?这是用
4
wow来划分列名的简单方法吗?你能解释一下//4是什么意思吗?它是用4