gpt4 book ai didi

python - 将 Dataframe 中的列相乘,其中列是 pd.MultiIndex

转载 作者:行者123 更新时间:2023-12-03 23:20:26 25 4
gpt4 key购买 nike

我想在列是 pd.MultiIndex 的 DataFrame 中乘以 2 列 (A*B)。
我想对列 level=0 中的每个 DataX (Data1, Data2, ...) 列执行此乘法。

df = pd.DataFrame(data= np.arange(32).reshape(8,4), 
columns = pd.MultiIndex.from_product(iterables = [["Data1","Data2"],["A","B"]]))

Data1 Data2
A B A B
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
5 20 21 22 23
6 24 25 26 27
7 28 29 30 31
乘法的结果也应该是一个带有 columns=pd.MultiIndex 的 DataFrame(见下文)。
    Data1   Data2   Data1   Data2
A B A B A*B A*B
0 0 1 2 3 0 6
1 4 5 6 7 20 42
2 8 9 10 11 72 110
3 12 13 14 15 156 210
4 16 17 18 19 272 342
5 20 21 22 23 420 506
6 24 25 26 27 600 702
7 28 29 30 31 812 930
我设法通过迭代列,级别 = 0 来执行此乘法,但寻找更好的方法来做到这一点。
for _ in df.columns.get_level_values(level=0).unique().tolist()[:]:
df[(_, "A*B")] = df[(_, "A")] * df[(_, "B")]
任何建议或提示非常感谢!
谢谢

最佳答案

这是使用 df.prod 的另一种选择和 df.join

u = df.prod(axis=1,level=0)
u.columns=pd.MultiIndex.from_product((u.columns,['*'.join(df.columns.levels[1])]))
out = df.join(u)
  Data1     Data2     Data1 Data2
A B A B A*B A*B
0 0 1 2 3 0 6
1 4 5 6 7 20 42
2 8 9 10 11 72 110
3 12 13 14 15 156 210
4 16 17 18 19 272 342
5 20 21 22 23 420 506
6 24 25 26 27 600 702
7 28 29 30 31 812 930

关于python - 将 Dataframe 中的列相乘,其中列是 pd.MultiIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63219407/

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