python:如何从数据帧计算多列的平均值
我想在数据框中创建一个包含3列平均值的新列。 我就是这样做的。有人能给我推荐一种更优雅的方式吗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',
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