gpt4 book ai didi

python - 如何根据多索引列第二级中的名称计算表达式

转载 作者:行者123 更新时间:2023-11-28 20:35:56 25 4
gpt4 key购买 nike

假设我有一个带有多索引列对象的数据框,其中第一级定义了一些类别,第二级定义了公式的一个组件。考虑数据框 df

np.random.seed([3,1415])

mux = pd.MultiIndex.from_product([list('XYZ'), list('kap'), ])
df = pd.DataFrame(np.random.randint(1, 5, size=(2, 9)), columns=mux)

df

X Y Z
k a p k a p k a p
0 1 4 3 4 3 3 4 3 4
1 2 4 2 3 4 4 1 4 3

我想为每个 XYZ< 计算公式 k * a ** p/

我可以分配给一个单独的数据框

x = df.X

x.eval('k * a ** p')

0 64
1 32
dtype: int64

但是我如何一次性获得 XYZ

最终结果应该是这样的:

    X    Y    Z
0 64 108 324
1 32 768 64

最佳答案

1). 一种方法是 groupby level

In [1841]: df.groupby(level=0, axis=1).apply(lambda x: x[x.name].eval('k*a**p'))
Out[1841]:
X Y Z
0 64 108 324
1 32 768 64

2). 另一种,按级别循环。

In [1818]: pd.DataFrame({c: df[c].eval('k*a**p') for c in df.columns.levels[0]})
Out[1818]:
X Y Z
0 64 108 324
1 32 768 64

关于python - 如何根据多索引列第二级中的名称计算表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46047642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com