gpt4 book ai didi

python - Pandas Multiindex - 对组执行操作

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

我有一个多索引数据框,我想根据其中一列的最小值对每个组执行操作。例如:

import pandas as pd
d={'name':['foo','foo', 'foo', 'bar', 'bar', 'bar','baz', 'baz'],
'grp':[1, 2, 4, 1, 4, 8, 2, 4],
'val':[50, 100, 200, 25, 100, 200, 75, 150]}
df = pd.DataFrame(data=d)
df.set_index(['name', 'grp'], inplace=True)
df

给我一​​个这样的数据框:

          val
name grp
foo 1 50
2 100
4 200
bar 1 25
4 100
8 200
baz 2 75
4 150

我想做的是根据“grp”中的最低值对每个“grp”分组的每个值执行操作。例如,通过将组中的每个值除以最低值来归一化每个“val”,得到如下所示:

          val
name grp
foo 1 50 1
2 100 2
4 200 4
bar 1 25 1
4 100 4
8 200 8
baz 2 75 1
4 150 2

请注意,计算是在“val”列上执行的,但基于最小“grp”数字的“val”值。我正在努力寻找一种循环遍历此方法的好方法,因此感谢您的指点。如果它有所作为,我正在使用 Python v3.6。

最佳答案

使用 divlevel

df.div(df.min(level=[0]),level='name')
Out[157]:
val
name grp
foo 1 1.0
2 2.0
4 4.0
bar 1 1.0
4 4.0
8 8.0
baz 2 1.0
4 2.0

关于python - Pandas Multiindex - 对组执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124210/

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