提问人:technical 提问时间:7/18/2023 更新时间:7/18/2023 访问量:38
Python-Pandas- 使用日期时间列计算天数
Python-Pandas- Calculation of days using datetime columns
问:
我有 2 列,createddate,closeddate,需要创建一个新列,其中 closeddate 减去 createddate,如果 closed date 为 null,则将其与 sysdate 进行插补。
关闭日期和创建日期为 datetime64[ns] dataype。 下面是示例数据帧
``df:
createddate closeddate
30-06-2023 6.21.58 PM 03-07-2023 5.29.44 PM
30-06-2023 6.18.16 PM
Expected output
createddate closeddate Ageing_days
30-06-2023 6.21.58 PM 03-07-2023 5.29.44 PM 3
30-06-2023 6.18.16 PM 18
我尝试使用下面的代码,但问题是使用以下代码的第一行需要 2 天而不是 3 天
Tried code:
df['aging_cal'] = (df['ClosedDate'].fillna(datetime.datetime.now()) - df['Created']).dt.days
不正确的 o/p
Expected output
createddate closeddate Ageing_days
30-06-2023 6.21.58 PM 03-07-2023 5.29.44 PM 2
30-06-2023 6.18.16 PM 18
不确定上面的代码有什么问题。
答:
2赞
mozway
7/18/2023
#1
看起来您需要先将 Timedelta 带到当天:ceil
df['aging_cal'] = (df['ClosedDate'].fillna(pd.Timestamp('now'))
- df['Created']).dt.ceil('D').dt.days
输出:
Created ClosedDate aging_cal
0 2023-06-30 18:21:58 2023-07-03 05:29:44 3
1 2023-06-30 18:18:16 NaT 18
可重复输入:
from pandas import Timestamp, NaT
df = pd.DataFrame({'Created': {0: Timestamp('2023-06-30 18:21:58'),
1: Timestamp('2023-06-30 18:18:16')},
'ClosedDate': {0: Timestamp('2023-07-03 5:29:44'),
1: NaT}})
0赞
Maria K
7/18/2023
#2
如果要忽略日期时间的 HH:MM:SS 部分,则可以在减去之前将时间戳转换为日期:
(df['ClosedDate'].fillna(datetime.now()).apply(pd.Timestamp.date) -
df['Created'].apply(pd.Timestamp.date)).dt.days
输出:
0 3
1 18
dtype: int64
下一个:在 R 中单独使用日期和时间
评论
df.to_dict()