python - 从具有 NaT 值的 datetime64[ns] 列创建 timedelta 列?
问题描述
我正在阅读 CSV 文件。
df = pd.read_csv('xyz.csv',parse_dates=['last_time'])
的dtype
列last_tweeted
是datetime64[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
' 的列。
解决方案
Remove df[]
,它被boolean indexing
一些掩码用于:
df['time_since'] = df['last_time'] - datetime.datetime.now()
推荐阅读
- powershell - 导入 CSV 并使用 Get-Hotfix 导出为 CSV
- r - 在 R 中编程时,顺序是否始终保持并得到尊重?
- flutter - Dart / flutter_sound 示例中的期货不起作用
- module - 不同模块文件中的相同变量名总是返回最后一个
- python - 数组中的-1索引?
- python - 在没有 C++ 编译器的情况下安装 python 包
- c - 在尝试分配新内存之前是否重新分配?
- c++ - 如何将 x 和 y 包裹在屏幕上?
- python - sp_execute_external_script 找不到 setuptools 安装的模块
- python-3.x - MongoEngine:是否以及如何清理搜索和数据输入?