如何减去 Pandas Dataframe 中的两个日期时间值

发布于 2025-01-16 15:06:33 字数 507 浏览 1 评论 0原文

我正在开发一个项目,我需要减去两个日期时间值来获取天数。数据示例如下所示:


                   ALARM_DATE               CONT_DATE  \
0      2020/06/18 00:00:00+00  2020/06/23 00:00:00+00   
1      2020/06/01 00:00:00+00  2020/06/04 00:00:00+00   
2      2020/08/10 00:00:00+00  2020/03/01 00:00:00+00   
3      2020/03/31 00:00:00+00  2020/04/01 00:00:00+00   
4      2020/04/14 00:00:00+00  2020/04/19 00:00:00+00   
...                       ...                     ...   

我尝试简单地减去这些值,但显然这不起作用。有人可以帮忙吗?

I’m working on a project and I need to subtract two date time values to get the number of days. A sample of the data can be seen below:


                   ALARM_DATE               CONT_DATE  \
0      2020/06/18 00:00:00+00  2020/06/23 00:00:00+00   
1      2020/06/01 00:00:00+00  2020/06/04 00:00:00+00   
2      2020/08/10 00:00:00+00  2020/03/01 00:00:00+00   
3      2020/03/31 00:00:00+00  2020/04/01 00:00:00+00   
4      2020/04/14 00:00:00+00  2020/04/19 00:00:00+00   
...                       ...                     ...   

I tried simply subtracting the values, but obviously that didn’t work. Can anyone please help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

塔塔猫 2025-01-23 15:06:33

首先将列转换为实际日期:

df['ALARM_DATE'] = pd.to_datetime(df['ALARM_DATE'])
df['CONT_DATE'] = pd.to_datetime(df['CONT_DATE'])

或者:

df[['ALARM_DATE', 'CONT_DATE']] = df[['ALARM_DATE', 'CONT_DATE']].apply(pd.to_datetime)

输出:

>>> df['CONT_DATE'] - df['ALARM_DATE']
0      5 days
1      3 days
2   -162 days
3      1 days
4      5 days
dtype: timedelta64[ns]

Convert your columns to actual dates first:

df['ALARM_DATE'] = pd.to_datetime(df['ALARM_DATE'])
df['CONT_DATE'] = pd.to_datetime(df['CONT_DATE'])

Or:

df[['ALARM_DATE', 'CONT_DATE']] = df[['ALARM_DATE', 'CONT_DATE']].apply(pd.to_datetime)

Output:

>>> df['CONT_DATE'] - df['ALARM_DATE']
0      5 days
1      3 days
2   -162 days
3      1 days
4      5 days
dtype: timedelta64[ns]
缪败 2025-01-23 15:06:33

正如我在之前的回答中提出的此类问题,您还可以使用 dt() 访问器进行系列:

df[['CONT_DATE','ALARM_DATE']] = df[['CONT_DATE','ALARM_DATE']].apply(pd.to_datetime) 
df['DAYS_DIFF'] = (df['CONT_DATE'] - df['ALARM_DATE']).dt.days

这具有从输出中删除“天”元素的优点。

As I put in my previous answer to this kind of question, you can also use the dt() accessor for series:

df[['CONT_DATE','ALARM_DATE']] = df[['CONT_DATE','ALARM_DATE']].apply(pd.to_datetime) 
df['DAYS_DIFF'] = (df['CONT_DATE'] - df['ALARM_DATE']).dt.days

This has the advantage of removing the 'days' element from the output.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文