我有一个包含5列的表格:日期,时间,事件,电子邮件组织ID。我想删除重复的行,它们具有相同的日期,相同的时间(时间可以与同一日期的另一个时间相匹配,最多匹配+或-30秒)和相同的事件。我已经重新采样了数据并删除了event。的重复项,请参见下面的代码。我现在想将电子邮件地址和组织ID重新添加回结果数据中。这意味着我想找到组织ID,事件ID和电子邮件地址的唯一组合,并基于此重新采样数据。我只为比赛做
您可以看到事件'iti'在2:29:40和2:29:50彼此重复30秒。所以我只保留了这两个值中的一个。 现在,我想将电子邮件地址和组织ID行添加回结果数据中。我只想要那些与相应事件匹配的行
样品输入和输出的图片如下
到目前为止的代码
df=pd.read_csv('data.csv')
Date Time Event email organization id
12/15/2018 6:55:41 abc kp 1035
12/15/2018 13:36:39 def pk 1036
12/15/2018 14.21:56 com lr 1040
12/16/2018 2:29:30 pil rm 1041
12/16/2018 20:22:20 ati as 1042
12/17/2018 2:29:40 iti ap 1040
12/17/2018 2:29:30 esz pg 1041
12/17/2018 2:29:50 iti ap 1040
12/17/2018 9:04:03 ono ar 1041
12/17/2018 9:35:04 fac sdh 1042
df1 = pd.DataFrame([' '.join([x,y]) for x, y in
zip(df['Date'],df['Time'])])
df1.columns = ['DateTime']
df1['DateTime'] = pd.to_datetime(df1['DateTime'])
df = df.join(df1)
df.set_index('DateTime', inplace=True)
outdf = df.resample('30S')['Event'].unique().to_frame()
outdf.columns = ['Events']
outdf = outdf.loc[outdf['Events'].apply(lambda x: len(x) > 0)]
df1=outdf['Events'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('Events')
df1['Date'] = df1.index.date
df1['Time'] = df1.index.time
df1
Events Date Time
DateTime
2018-12-15 06:55:30 abc 2018-12-15 06:55:30
2018-12-15 13:36:30 def 2018-12-15 13:36:30
2018-12-15 14:56:00 com 2018-12-15 14:56:00
2018-12-16 02:29:30 pil 2018-12-16 02:29:30
2018-12-16 20:22:00 ati 2018-12-16 20:22:00
2018-12-17 02:29:30 esz 2018-12-17 02:29:30
2018-12-17 02:29:30 iti 2018-12-17 02:29:30
2018-12-17 09:04:00 ono 2018-12-17 09:04:00
2018-12-17 09:35:00 fac 2018-12-17 09:35:00
在此最终输出中,我想添加电子邮件和组织ID。