gpt4 book ai didi

python - Pandas 连接上一个当前文本和下一个文本

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:34 24 4
gpt4 key购买 nike

给定输入数据框

Event_id,reportTime,ReportValX,ReportValY,ReportText

1,13_01,13,1,Man Arrived near the car
1,13_02,13,2.2,The Car was fast
1,13_02,13,2.1,The lights were on.
1,13_03,13,3,The man hit the car
2,13_01,13,1,Cat was on the mat
2,13_02,13,2.2,mat was red
2,13_03,13,3.1,Dad is a man
2,13_03,13,3,Dad has a hat

enter image description here

描述

对于给定的事件 ID,如示例中所示,我们有 1 和 2 事件。每个事件都有一个报告时间 13_01。 13 是小时,01 是分钟。对于每个报告,都有两个数值 ReportValX,ReportValY 和一个报告文本,例如“,Man Arrived near the car”。对于给定的事件 ID,在给定时间(例如 13_02)可能有多个报告。例如:事件 ID 1、时间 13_02 和事件 ID 2 时间 13_03。

挑战对于事件 ID 中的每个小时,收集前一个文本、当前文本、具有由标记分隔的同一时间的其他文本以及由文本分隔的该小时的后续文本

例如:

Event_id,reportTime,ReportValX,ReportValY,ReportText_Before,Reprt Text_Current,Report Text Same Time,Report Text Later

1,13_01,13,1,,Man Arrived near the car,Man Arrived near the car,The Car was fast. <NEXT> The lights were on. <NEXT> The man hit the car
1,13_02,13,2.2,Man Arrived near the car,The Car was fast,The Car was fast <NEXT> The lights were on.,The man hit the car

规则

  1. Event_id、reportTime、ReportValX、ReportValY 按原样。

  2. ReportText_Before:时间为 13_4 时 .. 13_1 的所有文本 +<下一页> + 13_02++ .. <13_4>

  3. ReportText_Reprt Text_Current:13_4处的文字
  4. ReportText_Reprt 报告文本同时:所有同时发生的文本,13_4 由标签分隔。
  5. 稍后报告文本:所有文本 13_05++ 13_06 + ..... 13_N。

enter image description here

输入和输出也以图像形式提供。

最佳答案

你需要玩一下groupbyapply来实现你想要的。

首先,创建两个新列 'Hour''Minute' 以更轻松地识别时间。

df["Hour"], df["Minute"] = zip(*df['reportTime'].apply(lambda x : list(map(int, x.split('_')))))

然后编写一个自定义函数来创建新列,并使用 groupbyapply 来使用它。

def makerep(x):
res = x[['Event_id','reportTime','ReportValX','ReportValY']]
res['ReportText_Before'] = x.apply(lambda el : '<NEXT>'.join(x['ReportText'].loc[x['Minute'] < el['Minute']]), axis=1)
res['ReportText_Current'] = x['ReportText']
res['ReportText_SameTime'] = x.apply(lambda el : '<NEXT>'.join(x['ReportText'].loc[x['Minute'] == el['Minute']]), axis=1)
res['ReportText_Later'] = x.apply(lambda el : '<NEXT>'.join(x['ReportText'].loc[x['Minute'] > el['Minute']]), axis=1)
return res

ddf = df.groupby(['Event_id', 'Hour']).apply(makerep)

您可以按 'Event_id''Hour' 进行分组,并使用 'Minute' 选择较早、相同或较晚的分钟数连接新列中的字符串。

关于python - Pandas 连接上一个当前文本和下一个文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57937417/

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