Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 3.x 计算数据帧中每几列的平均值_Python 3.x_Pandas_Aggregate - Fatal编程技术网

Python 3.x 计算数据帧中每几列的平均值

Python 3.x 计算数据帧中每几列的平均值,python-3.x,pandas,aggregate,Python 3.x,Pandas,Aggregate,我有一个熊猫数据框,数据: ID | A1| A2| B1| B2 ID1| 2 | 1 | 3 | 7 ID2| 4 | 6 | 5 | 3 我想分别按行计算列(A1和A2)和(B1和B2)的平均值。我的期望输出: ID | A1A2 mean | B1B2 mean ID1| 1.5 | 5 ID2| 5 | 4 我可以将所有列的平均值放在一起,但找不到任何函数来获得所需的输出。 Python中是否有任何内置方法?使用lambda函数获取mean列的第一个

我有一个熊猫数据框,数据:

ID | A1| A2| B1| B2 
ID1| 2 | 1 | 3 | 7 
ID2| 4 | 6 | 5 | 3
我想分别按行计算列(A1和A2)和(B1和B2)的平均值。我的期望输出:

ID | A1A2 mean | B1B2 mean
ID1| 1.5       | 5
ID2| 5         | 4
我可以将所有列的平均值放在一起,但找不到任何函数来获得所需的输出。
Python中是否有任何内置方法?

使用lambda函数获取
mean
列的第一个字母,如果第一列不是索引,则使用:

另一种解决方案是通过索引
str[0]
提取列名称:

df = df.set_index('ID')

print (df.columns.str[0])
Index(['A', 'A', 'B', 'B'], dtype='object')

df = df.groupby(df.columns.str[0], axis=1).mean().add_suffix('_mean').reset_index()
print (df)
    ID  A_mean  B_mean
0  ID1     1.5     5.0
1  ID2     5.0     4.0
或:

验证解决方案:

a = df.filter(like='A').mean(axis=1)
b = df.filter(like='B').mean(axis=1)

df = df[['ID']].assign(A_mean=a, B_mean=b)
print (df)
    ID  A_mean  B_mean
0  ID1     1.5     5.0
1  ID2     5.0     4.0
编辑:

如果有不同的列名称,需要在列表中指定它们:

a = df[['A1','A2']].mean(axis=1)
b = df[['B1','B2']].mean(axis=1)

df = df[['ID']].assign(A_mean=a, B_mean=b)
print (df)

这里的x是什么?实际上,我需要分别计算两列的平均值,它将计算所有列的单个平均值。但我需要一起计算a1和a2的平均值,b1和b2一起计算所有列的平均值,就像前面一样。这里我有4列,需要计算a1和a2的平均值;b1和b2的平均值。我应用了你的技术,计算a1、a2、b1、B2的平均值。如果你按列进行分组。str[0],问题是如果列名称彼此完全不同,那么你上次编辑的结果就是这样的!好极了!谢谢!但我认为它应该有一些直接的方法,比如选择SQL技术
a = df.filter(like='A').mean(axis=1)
b = df.filter(like='B').mean(axis=1)

df = df[['ID']].assign(A_mean=a, B_mean=b)
print (df)
    ID  A_mean  B_mean
0  ID1     1.5     5.0
1  ID2     5.0     4.0
a = df[['A1','A2']].mean(axis=1)
b = df[['B1','B2']].mean(axis=1)

df = df[['ID']].assign(A_mean=a, B_mean=b)
print (df)