python:如何从数据帧计算多列的平均值

python:如何从数据帧计算多列的平均值,python,pandas,mean,Python,Pandas,Mean,我想在数据框中创建一个包含3列平均值的新列。 我就是这样做的。有人能给我推荐一种更优雅的方式吗 import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(0, 100, size = (10, 6)), columns = [['a1', 'a2', 'a3',

我想在数据框中创建一个包含3列平均值的新列。 我就是这样做的。有人能给我推荐一种更优雅的方式吗

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0, 100, size = (10, 6)), columns = [['a1', 'a2', 'a3', 
                                                                         'b1', 'b2', 'b3']])
df['mean_a'] = df[['a1', 'a2', 'a3']].mean(axis=1).astype(int)
df['mean_d'] = df[['b1', 'b2', 'b3']].mean(axis=1).astype(int)

你的解决方案没有问题。”“优雅”不是中的标准,请参见

显式优于隐式。
稀疏比密集好。
可读性计数。

如果您不想键入所有这些列名,则可以执行以下操作:

df.join(df.groupby(df.columns.str[0], axis=1).mean().astype(int).add_prefix('mean_'))
输出:

   a1  a2  a3  b1  b2  b3  mean_a  mean_b
0  44  47  64  67  67   9      51      47
1  83  21  36  87  70  88      46      81
2  88  12  58  65  39  87      52      63
3  46  88  81  37  25  77      71      46
4  72   9  20  80  69  79      33      76
5  47  64  82  99  88  49      64      78
6  29  19  19  14  39  32      22      28
7  65   9  57  32  31  74      43      45
8  23  35  75  55  28  34      44      39
9   0   0  36  53   5  38      12      32

不要混淆编码和加密…在真实数据中,我有很多列。这就是为什么我在寻找更自动化的解决方案的原因。所以你想把所有的方法和观察结果混合在一个大数据框架中?更糟糕的是,这是一个典型的初学者误解,以为Excel电子表格采用数据框架…我需要为我的老板准备好输出Excel电子表格。这是他想要查看数据的唯一方式。不是我的选择。我也无法控制其他软件导出数据的方式。
   a1  a2  a3  b1  b2  b3  mean_a  mean_b
0  44  47  64  67  67   9      51      47
1  83  21  36  87  70  88      46      81
2  88  12  58  65  39  87      52      63
3  46  88  81  37  25  77      71      46
4  72   9  20  80  69  79      33      76
5  47  64  82  99  88  49      64      78
6  29  19  19  14  39  32      22      28
7  65   9  57  32  31  74      43      45
8  23  35  75  55  28  34      44      39
9   0   0  36  53   5  38      12      32