Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DataFrame:组合列以提供平均值_Python_Pandas_Dataframe_Average - Fatal编程技术网

Python DataFrame:组合列以提供平均值

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

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

您需要使用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