gpt4 book ai didi

python - Pandas - 检查列中的数字是否在行中

转载 作者:太空狗 更新时间:2023-10-30 01:25:45 27 4
gpt4 key购买 nike

我有一个 Pandas 数据框如下:

user_id product_id order_number
1 1 1
1 1 2
1 1 3
1 2 1
1 2 5
2 1 1
2 1 3
2 1 4
2 1 5
3 1 1
3 1 2
3 1 6

我想查询此 df 的最长连胜(未跳过任何 order_number)和最后连胜(自上次 order_number 以来)。

理想的结果如下:

user_id product_id longest_streak last_streak
1 1 3 3
1 2 0 0
2 1 3 3
3 1 2 0

如果您对此有任何见解,我将不胜感激。

最佳答案

我仍然不太确定您是如何定义 last_streak 的,但是,假设不重复相同的用户和产品组合,以下计算最长的连续:

import itertools

def extract_streaks(data):
streaks = [len(list(rows)) for d,rows in itertools.groupby(data) if d==1.0]
return max(streaks) + 1 if streaks else 0

df['diffs'] = df.order_number.diff()
df.groupby(['user_id', 'product_id'])['diffs'].apply(extract_streaks)
#user_id product_id
#1 1 3
# 2 0
#2 1 3

关于python - Pandas - 检查列中的数字是否在行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49471283/

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