python - 计算评论和回复之间的时间差(ChildID、ParentID)
问题描述
我尝试dataframes
用相同的ID
(MainID
和ParentID
) 计算两者之间的时间差,以考虑评论和响应之间的联系。因此,一个dataframe
由带有相应时间戳和 a 的注释组成,MainID
另一个由dataframe
带有时间戳和 的答案组成,与ParentID
相同MainID
。但是,在我的记录中,一个独特的评论可能包含多个回复。因此,我的目标是计算第一个答案(或最后一个答案)的差异并将其写回dataframe
. 但是,我不知道如何实现这一点,而且我的功能似乎也不起作用。
for i in Comments['MainID']:
commentID = i
for j in Replies['ParentID']:
parentID = j
if commentID == parentID:
Comments['new'] == Comments['publishedAt'] - Replies['publishedAt']
Comment
MainID Message Published
1 terssfd32 ... 2018-06-25 23:00:00
2 hetasfd2s ... 2018-06-25 23:10:00
3 eeasdfr3d ... 2018-06-25 23:20:00
4 ... ... ...
Replies
ChildID ParentID Message Published
1 1a terssfd32 ... 2018-06-25 23:00:40
2 2a terssfd32 ... 2018-06-25 23:05:08
3 3a hetasfd2s ... 2018-06-25 23:11:40
4 4a hetasfd2s ... 2018-06-25 23:14:30
5 5a hetasfd2s ... 2018-06-25 23:16:10
6 6a eeasdfr3d ... 2018-06-25 23:22:08
Goal
MainID Published PublishedReply Diff
1 terssfd32 2018-06-25 23:00:00 2018-06-25 23:00:40 40sec
2 hetasfd2s 2018-06-25 23:10:00 2018-06-25 23:11:40 100sec
3 eeasdfr3d 2018-06-25 23:20:00 2018-06-25 23:22:08 128sec
4 ... ... ... ...
解决方案
这是解决此问题的一种方法。
确保您的“已发布”列属于类型datetime
Comment['Published'] = pd.to_datetime(Comment['Published'])
Replies['Published'] = pd.to_datetime(Replies['Published'])
在其对应的键上合并 2 个 DataFrame
df_new = (Comment[['MainID', 'Published']]
.merge(Replies[['ParentID', 'Published']],
left_on='MainID',
right_on='ParentID',
suffixes=('_comment', '_reply'))
.drop('ParentID', axis=1))
添加计算Diff
列
df_new['Diff'] = (df_new['Published_reply'] - df_new['Published_comment']).dt.total_seconds()
对 DataFrame 进行排序Diff
并删除重复项。这将保留“第一个”评论。
df_new = df_new.sort_values('Diff').drop_duplicates('MainID')
print(df_new)
MainID Published_comment Published_reply Diff
0 terssfd32 2018-06-25 23:00:00 2018-06-25 23:00:40 40.0
2 hetasfd2s 2018-06-25 23:10:00 2018-06-25 23:11:40 100.0
5 eeasdfr3d 2018-06-25 23:20:00 2018-06-25 23:22:08 128.0
如果您需要“最后”注释,请在方法中添加ascending=False
参数sort_values
推荐阅读
- javascript - 使用
带有 pageKey 的标签在 VuePress 1.x 中不起作用 - ruby - 如何让 Ruby 中的输出对偶数和奇数进行排序?
- rxjs6 - 带有 RxJS 6 的模板
- mysql - bash/linux 中的引用问题
- python - Issue when running xlwings python standalone fibonacci example
- java - 如何使用基于 Hyperledger Fabric Java 链码的属性查询来获取模型
- javascript - Javascript | Generate number
- reactivesearch - Reactivesearch - 来自标题的查询参数不更新结果页面
- .net-core - BinaryFormatter 序列化 dotnet 核心和框架是否兼容?
- python - 从 postgresql django 获取 Topojson