gpt4 book ai didi

python - 按客户查找所有先前事件 ID 的最佳方法

转载 作者:行者123 更新时间:2023-12-01 08:21:22 25 4
gpt4 key购买 nike

我正在研究这个看起来相当简单的问题。数据看起来像:

enter image description here

例如,客户 ID 的当前事件 ID 是 abc。现在,我需要以列表格式查找所有客户的所有 eventId,以便记录第一个事件 ID,然后再记录到最新的事件 ID。

我用于 1 个客户的方法如下:

import pandas as pd
import numpy as np
data = pd.read_csv('test.csv')
data.to_dict()
{'customerid': {0: 233, 1: 250, 2: 233, 3: 250, 4: 233},
'eventid': {0: 'abc', 1: 'bcd', 2: 'edc', 3: 'abl', 4: 'cdl'},
'date': {0: '2019-12-10',
1: '2019-12-08',
2: '2008-12-10',
3: '2019-12-01',
4: '2001-12-10'},
'previouseventid': {0: 'edc', 1: 'abl', 2: 'cdl', 3: np.nan, 4: np.nan}}
    customerid  eventid date    previouseventid
0 233 abc 2019-12-10 edc
1 250 bcd 2019-12-08 abl
2 233 edc 2008-12-10 cdl
3 250 abl 2019-12-01
4 233 cdl 2001-12-10
temp = [cust_233['eventid'][0]]

for i in range(len(cust_233['previouseventid'])-1):
if pd.isna(cust_233['previouseventid'][i]) == False:
# print(cust_233['previouseventid'][i])
temp.append(cust_233['previouseventid'][i])
else:
# print('now exiting')
break

我觉得我的方法有点笨拙并且有很多代码。我如何有效地为所有客户解决问题?

更新:

我需要的输出是列表。
客户 233 的预期输出是一个列表 ['cdl', 'edc', 'abc'] 而客户 250 的预期输出是 ['abl', 'bcd']

最佳答案

您可以创建这样的列表:

df['previouseventid'] = df['customerid'].map(df.groupby('customerid')['eventid'].apply(list)) 

输出:
   customerid eventid        date  previouseventid
0 233 abc 2019-12-10 [abc, edc, cdl]
1 250 bcd 2019-12-08 [bcd, abl]
2 233 edc 2008-12-10 [abc, edc, cdl]
3 250 abl 2019-12-01 [bcd, abl]
4 233 cdl 2001-12-10 [abc, edc, cdl]

df.groupby('customerid')['eventid'].apply(list) 会给你列表
df.groupby('customerid')['eventid'].apply(list)                                                                                                                                     

customerid
233 [abc, edc, cdl]
250 [bcd, abl]
Name: eventid, dtype: object

关于python - 按客户查找所有先前事件 ID 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59364080/

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