【问题标题】:Python datetime difference between two dates to seconds (dataframe object) [duplicate]两个日期到秒之间的Python日期时间差(数据框对象)[重复]
【发布时间】:2020-10-29 11:58:23
【问题描述】:
需要 Python 代码帮助:我有这种格式的创建日期和关闭日期的日期时间差 - 01/30/2020 1:55:00 和 01/30/2020 09:44:00。需要将上述日期格式差异转换为总秒数。有时我该怎么做,差异会在天数和时间上,例如 - 25 天,05:23:00。如何将上述两个日期之间的时间差格式转换为总秒数并将其存储在与新列相同的数据框中。
我们将非常感谢您提供的任何帮助。
【问题讨论】:
标签:
python
dataframe
time
datediff
seconds
【解决方案1】:
此代码可能会对您有所帮助。
import datetime
date1 = "01/30/2020 1:55:00"
date2 = "01/30/2020 09:44:00"
date1_obj = datetime.datetime.strptime(date1, '%m/%d/%Y %H:%M:%S')
date2_obj = datetime.datetime.strptime(date2, '%m/%d/%Y %H:%M:%S')
difference_seconds = abs((date1_obj - date2_obj).seconds)
difference_days = abs((date1_obj - date2_obj).days)
print (difference_seconds)
print (difference_days)
【解决方案2】:
日期时间对象有一个名为 timestamp() 的方法,它返回自 1970 年开始以来的秒数。只需对日期时间和减法执行此操作即可。
seconds = date1.timestamp() - date2.timestamp()
【解决方案3】:
如果您使用的是 pandas 数据框,则可以使用 series dt accessor 将日期之间的差异转换为秒。
import pandas as pd
df = pd.DataFrame(data={
'from': ["01/30/2020 1:55:00", "01/25/2020 15:30:00"],
'to': ["01/30/2020 09:44:00", "01/26/2020 1:55:00"]})
# convert to datetime objects
df['from'] = pd.to_datetime(df['from'])
df['to'] = pd.to_datetime(df['to'])
df['difference'] = (df['to'] - df['from'])
df['difference_seconds'] = df['difference'].dt.total_seconds()
print(df)
这将给出一个类似的表格:
| | from | to | difference | difference_seconds |
|---:|:--------------------|:--------------------|:----------------|---------------------:|
| 0 | 2020-01-30 01:55:00 | 2020-01-30 09:44:00 | 0 days 07:49:00 | 28140 |
| 1 | 2020-01-25 15:30:00 | 2020-01-26 01:55:00 | 0 days 10:25:00 | 37500 |