【问题标题】:Creating timedelta column from a datetime64[ns] column which has NaT values?从具有 NaT 值的 datetime64[ns] 列创建 timedelta 列?
【发布时间】:2020-10-27 15:37:42
【问题描述】:

我正在读取 CSV 文件。

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

last_tweeted 列的dtypedatetime64[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()]

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

我收到以下错误:

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

我做错了什么?我假设 NaT 的计算将被忽略,或者我会得到一个 timedelta 列和一堆 NaT 的。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    删除df[],它被一些掩码用于boolean indexing

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

    【讨论】:

    • 啊……就是这样。我之前使用的是.loc,但忘了重新检查。谢谢 Jezrael,像往常一样,你是专家!
    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2020-04-28
    相关资源
    最近更新 更多