gpt4 book ai didi

python - 如何划分多索引数据框中的数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:47 25 4
gpt4 key购买 nike

如图所示,我有一个名为 "overall_zx"[78] 的多索引数据框。

YTD2017/YTD2018/YTD2019 的销售额和销量。现在我想计算价格(销售额除以个人 YTD)。我找到了计算价格的方法为[79],但我不知道如何将它组合到overall_zx这个表中。

不然有什么办法可以直接分吗?就像单一层次结构数据框一样。例如:

df['price']  = df['sales'] / df['volumns'] 

(在多索引中,这段代码不起作用)

Dataframe

最佳答案

您可以使用 DataFrame.join使用新的 MultIndex DataFrame,通过双 []rename 选择相同的新名称,这里是 price:

df1  = (df.join(df[['sales']].rename(columns={'sales':'price'}) / 
df[['volumns']].rename(columns={'volumns':'price'})))

DataFrame.stack reshape 的另一个想法和 DataFrame.unstack :

新列使用 DataFrame.assign对于一线解决方案:

df1 = df.stack().assign(price = lambda x: x['sales'] / x['volumns']).unstack()

这个替代方案有什么相同之处:

df1 = df.stack()
df1['price'] = df1['sales'] / df1['volumns']
df1 = df1.unstack()

从@Valdi_Bo 借用的数据:

print (df1)
volumns sales price \
YTD2017 YTD2018 YTD2019 YTD2017 YTD2018 YTD2019 YTD2017 YTD2018
A 212.0 220.0 226.16 3654.04 4163.87 4695.12 17.236038 18.926682
B 17.5 18.5 18.57 234.84 274.47 298.90 13.419429 14.836216
C 18.5 14.5 12.66 213.02 191.14 177.46 11.514595 13.182069


YTD2019
A 20.760170
B 16.095854
C 14.017378

关于python - 如何划分多索引数据框中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59113241/

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