gpt4 book ai didi

python - 在 Pandas 中使用不同的列进行分组和聚合

转载 作者:行者123 更新时间:2023-12-01 02:52:52 26 4
gpt4 key购买 nike

在 pandas 中有一个数据框,其中包含 ID 和交货天数(例如,每周 7 天): enter image description here

我想使用 groupby() pandas 函数并创建以下内容:每天创建 7 个不同的列(例如,delivery_day_1、delivery_day_2 等),并计算数据框中按 ID 分组的发生次数。怎样才能做到这一点?

谢谢。

最佳答案

我认为你需要groupby + size + unstackcrosstab首先进行 reshape 。

然后,如有必要,请按 reindex_axis 添加缺少的工作日最后add_prefix :

示例:

df = pd.DataFrame({'subscription_id':[1,2,3,1], 'delivery_weekday':[1,1,2,1]})

print (df)
delivery_weekday subscription_id
0 1 1
1 1 2
2 2 3
3 1 1
<小时/>
df = df.groupby(['subscription_id','delivery_weekday']) \
.size() \
.unstack(fill_value=0) \
.reindex_axis(range(1,8), fill_value=0, axis=1) \
.add_prefix('delivery_day_')

print (df)
delivery_weekday delivery_day_1 delivery_day_2 delivery_day_3 \
subscription_id
1 2 0 0
2 1 0 0
3 0 1 0

delivery_weekday delivery_day_4 delivery_day_5 delivery_day_6 \
subscription_id
1 0 0 0
2 0 0 0
3 0 0 0

delivery_weekday delivery_day_7
subscription_id
1 0
2 0
3 0
<小时/>
df = pd.crosstab(df['subscription_id'],df['delivery_weekday']) \
.reindex_axis(range(1,8), fill_value=0, axis=1) \
.add_prefix('delivery_day_')
print (df)

delivery_weekday delivery_day_1 delivery_day_2 delivery_day_3 \
subscription_id
1 2 0 0
2 1 0 0
3 0 1 0

delivery_weekday delivery_day_4 delivery_day_5 delivery_day_6 \
subscription_id
1 0 0 0
2 0 0 0
3 0 0 0

delivery_weekday delivery_day_7
subscription_id
1 0
2 0
3 0

关于python - 在 Pandas 中使用不同的列进行分组和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44542836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com