从熊猫数据框中获取前后日期时间

迪拉吉

我有一个如下所示的数据框,显示时间、主题和 on_time。

    created_time       subject          on_time
2020-02-26 21:01:40      A        2020-02-26 21:08:40
2020-02-26 21:01:40      A        2020-02-26 21:01:43
2020-02-26 21:01:40      A        2020-02-26 20:50:55
2020-02-26 21:01:40      A        2020-02-26 21:44:40
2020-02-26 01:01:50      B        2020-02-26 01:01:52
2020-02-26 01:01:50      B        2020-02-26 00:08:40
2020-02-26 01:01:50      B        2020-02-26 01:08:40
2020-02-26 01:01:50      B        2020-02-26 00:59:15

我需要输出数据帧显示 created_time、subject 和 on_time 就在 created_time 之前和之后

    created_time       subject     on_time_preceding     on_time_following
2020-02-26 21:01:40      A        2020-02-26 21:44:40   2020-02-26 21:01:43
2020-02-26 01:01:50      B        2020-02-26 00:59:15   2020-02-26 01:01:52

on_time_preceding 是 created_time 之前最近的 on_time,on_time_following 是 created_time 之后最近的 on_time

尼加尼

有用

import pandas as pd
import io

table = """
created_time|subject|on_time
2020-02-26 21:01:40|A|2020-02-26 21:08:40
2020-02-26 21:01:40|A|2020-02-26 21:01:43
2020-02-26 21:01:40|A|2020-02-26 20:50:55
2020-02-26 21:01:40|A|2020-02-26 21:44:40
2020-02-26 01:01:50|B|2020-02-26 01:01:52
2020-02-26 01:01:50|B|2020-02-26 00:08:40
2020-02-26 01:01:50|B|2020-02-26 01:08:40
2020-02-26 01:01:50|B|2020-02-26 00:59:15
"""
df = pd.read_table(io.StringIO(table), parse_dates=['created_time', 'on_time'], sep='|')
print(df[df['created_time'] > df['on_time']]
      .sort_values('on_time')
      .drop_duplicates(['created_time', 'subject'], keep='last')
      .merge(df[df['created_time'] < df['on_time']].groupby('subject')['on_time'].min(),
             left_on='subject', right_index=True, suffixes=('_preceding', '_following'))
      .sort_values('subject')
      .reset_index(drop=True))

# output:     
         created_time subject   on_time_preceding   on_time_following
0 2020-02-26 21:01:40       A 2020-02-26 20:50:55 2020-02-26 21:01:43
1 2020-02-26 01:01:50       B 2020-02-26 00:59:15 2020-02-26 01:01:52

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取时间序列熊猫每个月的最后日期

从熊猫数据框中的日期时间中删除时间戳

熊猫数据框组合两列以获取日期时间列

如何获取熊猫数据框中特定日期/时间的所有历史值?

解析嵌套熊猫数据框中的日期时间

熊猫数据框中的日期时间不会彼此相减

如何在熊猫数据框中舍入日期时间索引?

如何在熊猫数据框中删除日期和时间?

熊猫数据框日期时间比较代码中的错误?

在熊猫数据框中的日期时间上使用.count

在熊猫数据框中更改日期时间的值

如何更改熊猫数据框中列的日期时间格式

从分钟值在熊猫数据框中添加日期时间列

根据多个条件调整熊猫数据框中的日期时间

Pyspark获取每天的最后日期时间

从熊猫数据框中获取最小和最大日期

从熊猫数据框中获取具有最大日期的行

从熊猫数据框中获取多个最小和最大日期

如何在熊猫数据框中过滤前后的行

熊猫-从日期时间数据框中获取每天的第一个和最后一个值

使用日期时间扩展熊猫数据框

熊猫数据框分组日期时间月份

熊猫数据框列到日期时间

熊猫日期时间索引到数据框

在日期时间过滤熊猫数据框

对于特定日期时间,查找前后日期时间最接近的记录

从数据框中获取作为日期时间对象的索引

如何获取刷新数据透视表的最后日期和时间?

如何获取自定义间隔中的最后日期?-熊猫