计算多级选定列的平均值 header
Calculate mean of selected columns with multilevel header
我有一个包含多级 header 列的数据框,如下所示:
name 1 2 3 4
x y x y x y x y
A 1 4 3 7 2 1 5 2
B 2 2 6 1 4 5 1 7
如何计算 1x、2x 和 3x 而不是 4x 的平均值?
我试过了:
df['mean']= df[('1','x'),('2','x'),('3','x')].mean()
这没有用,它是 syas 键错误。我想得到:
name 1 2 3 4 mean
x y x y x y x y
A 1 4 3 7 2 1 5 2 2
B 2 2 6 1 4 5 1 7 4
有没有办法在将第一列 header 保持为整数的同时计算平均值?
这是唯一的一个解决方案:
import pandas as pd
iterables = [[1, 2, 3, 4], ["x", "y"]]
array = [
[1, 4, 3, 7, 2, 1, 5, 2],
[2, 2, 6, 1, 4, 5, 1, 7]
]
index = pd.MultiIndex.from_product(iterables)
df = pd.DataFrame(array, index=["A", "B"], columns=index)
df["mean"] = df.xs("x", level=1, axis=1).loc[:,1:3].mean(axis=1)
print(df)
1 2 3 4 mean
x y x y x y x y
A 1 4 3 7 2 1 5 2 2.0
B 2 2 6 1 4 5 1 7 4.0
步骤:
- Select 所有具有
df.xs("x", level=1, axis=1)
的“x”列
- Select 只有第 1 到 3 列
.loc[:,1:3]
- 用
.mean(axis=1)
计算平均值
我有一个包含多级 header 列的数据框,如下所示:
name 1 2 3 4
x y x y x y x y
A 1 4 3 7 2 1 5 2
B 2 2 6 1 4 5 1 7
如何计算 1x、2x 和 3x 而不是 4x 的平均值? 我试过了:
df['mean']= df[('1','x'),('2','x'),('3','x')].mean()
这没有用,它是 syas 键错误。我想得到:
name 1 2 3 4 mean
x y x y x y x y
A 1 4 3 7 2 1 5 2 2
B 2 2 6 1 4 5 1 7 4
有没有办法在将第一列 header 保持为整数的同时计算平均值?
这是唯一的一个解决方案:
import pandas as pd
iterables = [[1, 2, 3, 4], ["x", "y"]]
array = [
[1, 4, 3, 7, 2, 1, 5, 2],
[2, 2, 6, 1, 4, 5, 1, 7]
]
index = pd.MultiIndex.from_product(iterables)
df = pd.DataFrame(array, index=["A", "B"], columns=index)
df["mean"] = df.xs("x", level=1, axis=1).loc[:,1:3].mean(axis=1)
print(df)
1 2 3 4 mean
x y x y x y x y
A 1 4 3 7 2 1 5 2 2.0
B 2 2 6 1 4 5 1 7 4.0
步骤:
- Select 所有具有
df.xs("x", level=1, axis=1)
的“x”列
- Select 只有第 1 到 3 列
.loc[:,1:3]
- 用
.mean(axis=1)
计算平均值