繁体   English   中英

对 pandas 中分组数据的奇数/偶数行求和

[英]Sum Odd/Even rows of grouped data in pandas

我有一个 dataframe 看起来像这样

df_cost = pd.DataFrame({"Product": ["A","A","A","A","B","B","C","C"],
                    "Cost":[1000,10,2000,15,3500,15,5000,5]})

在这里,同一产品的奇数行是成本,偶数行是数量。 所以我想做的是按产品分组,然后分别对每个产品的所有奇数行和偶数行求和,然后除以另一个以获得平均价格。

我尝试使用 nth() 方法,但它只选择一个特定的行,因此我可以在我只有两行的情况下分隔数据,但如您所见,每个产品的行数不相等(尽管总是偶数)。

有什么想法吗?

在“product”上尝试groupby sum并在索引上尝试 % 然后unstack

df = (
    df_cost.groupby(['Product', df_cost.index % 2]).sum()
        .unstack()
        .droplevel(0, 1)
)

df

            0   1
Product          
A        3000  25
B        3500  15
C        5000   5

然后可以在0 / 1列上进行计算:

df[0] / df[1]
Product
A     120.000000
B     233.333333
C    1000.000000
dtype: float64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM