You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame添加timedelta类型列后全部值变为NaT的问题求助

Pandas DataFrame添加timedelta类型列后全部值变为NaT的问题求助

我现在遇到一个快把我搞疯的问题,想请教各位开发者:

我有一个包含datetime列的DataFrame,该列的数据类型是datetime64[ns],我想要新增一列,用来存储当前行的时间和CPI_DATETIMES_UTC_LIST这个numpy datetime数组中最近的下一个时间的差值。

我写了以下代码来实现这个逻辑:

time_since_cpi = pd.DataFrame(df['datetime'].to_numpy()[:, None] - CPI_DATETIMES_UTC_LIST)
time_since_cpi[time_since_cpi<np.timedelta64(0,'ns')] = pd.NaT
delta_series = time_since_cpi.min(axis=1,skipna=True)

这段代码运行后,delta_series的输出完全符合我的预期:前几行是NaT,后面的行能得到正确的时间差结果:

0                    NaT
1                    NaT
2                    NaT
3                    NaT
4                    NaT
...
289018   9 days 19:19:00
289019   9 days 19:20:00
289020   9 days 19:21:00
289021   9 days 19:22:00
289022   9 days 19:23:00
Length: 289023, dtype: timedelta64[ns]

但当我把这个结果赋值给原DataFrame的新列时:

df['time_since_cpi'] = delta_series

查看这个新列的时候,所有值居然全部变成了NaT:

1346869   NaT
1346870   NaT
1346871   NaT
1346872   NaT
1346873   NaT
..
1635887   NaT
1635888   NaT
1635889   NaT
1635890   NaT
1635891   NaT
Name: time_since_cpi, Length: 289023, dtype: timedelta64[ns]

这真的快把我搞崩溃了,有没有大佬能帮我看看这到底是哪里出了问题?

备注:内容来源于stack exchange,提问作者J Griffiths

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:04:33