首页 > 解决方案 > 从具有 NaT 值的 datetime64[ns] 列创建 timedelta 列?

问题描述

我正在阅读 CSV 文件。

df = pd.read_csv('xyz.csv',parse_dates=['last_time'])

dtypelast_tweeteddatetime64[ns]

该列目前只包含1 datetime64[ns]其余部分NaT

df

     last_time
0      NaT
1      NaT
2      NaT
3      NaT
4      2020-07-07 15:53:26.798844

我想做一个新专栏time_since

df['time_since'] = df[df['last_time'] - datetime.datetime.now()]

我阅读了一堆问题,但无法弄清楚问题所在。

我收到以下错误:

回溯(最后一次调用):文件“/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py”,第 3331 行,在 run_code exec(code_obj, self.user_global_ns, self.user_ns ) 文件 "",第 1 行,在 df['trial'] = df[df['last_time'] - datetime.datetime.now()] 文件 "/home/xxx/.local/lib/python3.6/site -packages/pandas/core/frame.py”,第 2806 行,在getitem中 indexer = self.loc._get_listlike_indexer(key, axis=1, raise_missing=True)[1] 文件“/home/xxx/.local/lib/python3.6/site-packages/pandas/core/indexing.py”,第 1553 行,在 _get_listlike_indexer keyarr,索引器,o._get_axis_number(axis),raise_missing=raise_missing 文件“/home/xxx/.local/lib/python3.6/site-packages/pandas/core/indexing.py”,第 1640 行, in _validate_read_indexer raise KeyError(f"None of [{key}] are in the [{axis_name}]") KeyError: "None of [TimedeltaIndex([NaT, NaT, NaT, NaT, NaT, NaT, NaT, NaT, \n '-1 days +23:06:31.564892', NaT, NaT],\n dtype='timedelta64[ns]', freq=None)] 在 [columns]"

我究竟做错了什么?我假设NaT计算时会忽略 ',否则我会得到一个timedelta包含一堆NaT' 的列。

标签: pythonpandasdataframe

解决方案


Remove df[],它被boolean indexing一些掩码用于:

df['time_since'] = df['last_time'] - datetime.datetime.now()

推荐阅读