AttributeError:'Series'对象没有属性'days'

Oll*_*ieP 7 python timedelta attributeerror

我在数据帧dtype中有一个列'delta':timedelta64 [ns],通过从另一个日期转包一个日期来计算.我试图通过使用此代码返回浮动天数:

from datetime import datetime
from datetime import date
df['days'] = float(df['delta'].days)
Run Code Online (Sandbox Code Playgroud)

但是我收到这个错误:

AttributeError: 'Series' object has no attribute 'days'
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Ase*_*hir 26

DataFrame 列是一个系列,对于系列,您需要 dt.accessor 来计算天数(如果您使用的是较新的 Pandas 版本)。你可以在这里查看文档

所以,你需要改变:

df['days'] = float(df['delta'].days)
Run Code Online (Sandbox Code Playgroud)

df['days'] = float(df['delta'].dt.days)
Run Code Online (Sandbox Code Playgroud)

  • 这回答了我的问题。我需要的唯一补充是 dt 引用 datetime 包,因此将 datetime 导入为 dt。也许这对于经验丰富的 Pythonista 来说是显而易见的,但我想那些正在寻找这个的人可能没有那么有经验 (2认同)

how*_*ark 10

在减去日期时,您应该使用以下代码.

df = pd.DataFrame([ pd.Timestamp('20010101'), pd.Timestamp('20040605') ])
(df.loc[0]-df.loc[1]).astype('timedelta64[D]')
Run Code Online (Sandbox Code Playgroud)

所以基本上使用.astype('timedelta64[D]')减去的列.