python - 使用groupby对pandas中的多维度数据进行划分

标签 python pandas pandas-groupby division

由于 pandas 无法在多维度上工作,因此我通常按行堆叠数据并使用虚拟列来标记数据维度。现在,我需要将一个维度除以另一个维度。

例如,给定此数据框,其中键定义尺寸

index  key  value
0       a   10
1       b   12
2       a   20
3       b   15
4       a   8
5       b   9

我想实现这个:

index   key value   ratio_a_b    
0      a    10     0.833333    
1      b    12     NaN
2      a    20     1.33333
3      b    15     NaN
4      a    8      0.888889
5      b    9      NaN

有没有办法使用groupby来做到这一点?

最佳答案

为此,您实际上不需要(也不应该使用)groupby:

# interpolate the b values
s = df['value'].where(df['key'].eq('b')).bfill()

# mask the a values and divide
# change to df['key'].ne('b') if you have many values of a
df['ratio'] = df['value'].where(df['key'].eq('a')).div(s)

输出:

   index key  value     ratio
0      0   a     10  0.833333
1      1   b     12       NaN
2      2   a     20  1.333333
3      3   b     15       NaN
4      4   a      8  0.888889
5      5   b      9       NaN

关于python - 使用groupby对pandas中的多维度数据进行划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57890031/

相关文章:

带有图像和标签的 Python GTK3 按钮

python - 中止 python 交互式控制台的评估

python - .remove 不删除给定的字符串

html - 如何隐藏 pandas <1.4 中的索引级别

python - Pandas 数据框组内的计算

python - 用 Pandas 按日期范围分组

python - 如何在 Python 中访问父类(super class)的元属性?

python - Pandas:使用索引中包含的列名时出现 KeyError

python - Pandas 除以多个列条目

python - Pandas : groupby function + rolling mean + reset index returning Nan