Python:将字符串转换为日期时间,计算时差,选择时差超过3天的行

Posted

技术标签:

【中文标题】Python:将字符串转换为日期时间,计算时差,选择时差超过3天的行【英文标题】:Python: Convert string to datetime, calculate time difference, and select rows with time difference more than 3 days 【发布时间】:2021-03-03 11:47:50 【问题描述】:

我有一个包含两个字符串日期列的数据框。首先,我想将这两列转换为日期时间并计算时间差。然后我想选择时差超过3天的行。

简单的df

ID     Start                End
234    2020-11-16 20:25     2020-11-18 00:10
62     2020-11-02 02:50     2020-11-15 21:56
771    2020-11-17 03:03     2020-11-18 00:10

想要的df

ID     Start                   End                     Time difference
62     2020-11-02 02:50:00     2020-11-15 21:56:00     13 days 19:06:00

当前输入

df['End'] = pd.to_datetime(z['End'])
df['Start'] = pd.to_datetime(z['Start'])
df['Time difference'] = df['End'] - df['Start']

如何选择时差超过 3 天的行?

提前致谢!感谢您对此的任何帮助!

【问题讨论】:

【参考方案1】:
df=df.set_index('ID').apply(lambda x: pd.to_datetime(x))#Set ID as index to allow coercing of dates to datetime
df=df.assign(Timedifference =df['End'].sub(df['Start'])).reset_index()#Calculate time difference and reset index
df[df['Timedifference'].dt.days.gt(3)]#Mask a bollean selection to filter youre desired

【讨论】:

【参考方案2】:

你只是少了一行,转换成天再查询

df[df['Time difference'].dt.days > 3]

ID     Start                   End                     Time difference
62     2020-11-02 02:50:00     2020-11-15 21:56:00     13 days 19:06:00

【讨论】:

以上是关于Python:将字符串转换为日期时间,计算时差,选择时差超过3天的行的主要内容,如果未能解决你的问题,请参考以下文章

在具有正确日期的python中转换和计算日期时间对象的时区

Swift 5 中从日期时间字符串到当前时间的天数时差

将可选字符串转换为日期

使用Python计算时差[重复]

带有时区信息的日期时间模块中的python timedelta计算[重复]

计算两个时间之间的差值