我有一个具有以下结构的 Pandas DataFrame:
import pandas as pd
data = {
'USIM': ['1111111', '2199608', '2222222', '4444444', '1111111', '2111111', '2222222', '4444444'],
'WEBSHOP_ORDER': [0, 0, 0, 0, 1, 1, 1, 1],
'DEMAND_QTY': [1, 3, 2, 1, 5, 9, 8, 6]
}
df = pd.DataFrame(data)
我想计算每个 USIM 的网上商店订单中的平均商品数量。 USIM 列表示唯一标识符,WEBSHOP_ORDER 列表示每个条目的订单 ID,DEMAND_QTY 列表示每个订单中的商品数量。
我想获得以下输出:
USIM AVG_ITEMS_IN_WEBSHOP_ORDER
0 1111111 17.5 # (28+7)/2 *
1 2111111 28.0
2 2199608 7.0
3 2222222 17.5
4 4444444 17.5
# * 28 is the sum of WEBSHOP_ORDER == 1
# 7 is the sum of WEBSHOP_ORDER == 0
AVG_ITEMS_IN_WEBSHOP_ORDER 列表示每个唯一 USIM 值的网上商店订单中的平均商品数量。
有人可以帮我解决实现此目标的逻辑或代码吗?谢谢!
最佳答案
IIUC,你需要一个双 groupby
。一次计算对象的总和,一次计算每个 ID 的平均值:
out = (df.groupby('WEBSHOP_ORDER')['DEMAND_QTY'].transform('sum')
.groupby(df['USIM']).mean()
.reset_index(name='AVG_ITEMS_IN_WEBSHOP_ORDER')
)
输出:
USIM AVG_ITEMS_IN_WEBSHOP_ORDER
0 1111111 17.5
1 2111111 28.0
2 2199608 7.0
3 2222222 17.5
4 4444444 17.5
关于python - 计算 Pandas DataFrame 中每个 USIM 的网上商店订单中的平均商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76472167/