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
相关产品推荐
相关产品推荐

