[英]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.