如何解决Python pandas 计算分组后的份额
我想按邮政编码对以下类型的数据集进行分组,并计算每种运输方式每个邮政编码的已完成订单份额。 我已经实现了一个 csv 文件并尝试了下面的代码,但我意识到我需要 MultiIndex - 而且因为我有很多不同的邮政编码,我不知道如何使用它。
邮政编码 | shipping_method | completed_orders |
---|---|---|
12345 | post1 | 1 |
12345 | post2 | 3 |
12345 | post3 | 2 |
11123 | post1 | 1 |
11123 | post2 | 2 |
import numpy as np
import pandas as pd
shipping_data = pd.read_csv("shipping_per_postalcode.csv")
shareof = lambda x: x/x.sum()
result = shipping_data['amount_users_completed'].groupby(level=['postalcode','shipping_option']).transform(sumto)
print(result)
解决方法
喜欢吗?
result = df['completed_orders'] / df.groupby(['postalcode'])['completed_orders'].transform(sum)
# Out[43]:
# 0 0.166667
# 1 0.500000
# 2 0.333333
# 3 0.333333
# 4 0.666667
# Name: completed_orders,dtype: float64
,
您可能需要额外的 groupby 才能获得贡献百分比
df_agg=df_1.groupby(['postalcode','shipping_method'])['completed_orders'].sum()
df_agg.groupby(level=0).apply(lambda x: 100*x/float(x.sum()))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。