Warm tip: This article is reproduced from serverfault.com, please click

python-TypeError:无法将类似datetime的日期从[datetime64 [ns]]分配为[timedelta64 [D]]

(python - TypeError: cannot astype a datetimelike from [datetime64[ns]] to [timedelta64[D]])

发布于 2020-11-28 02:08:51

因此,我想计算两天之间的持续时间,但我只希望天数而不是分钟数和秒数作为持续时间。我正在使用的代码如下:

df['duration']=df['deadline'].sub(df['created_at'].astype('datetime64[D]'))

但是,这给了我……35天12:42:40。但是我不希望“日子12:42:40”。相反,我想提取35作为整数。因此,我尝试用[timedelta64 [D]替换datetime64 [D],这给了我TypeError。有什么办法可以做到这一点吗?

Questioner
Jiang Yuxin
Viewed
11
K.L.Miller 2020-11-28 11:07:16

解决此问题的最简便易行的方法是将两个序列彼此相减,然后访问序列中datetime访问以检索日期。

这是一个简单的例子。

df = pd.DataFrame({
    'deadline': pd.date_range(start='2020-03-01', end='2020-03-05', periods=5),
    'created_date': pd.date_range(start='2020-01-01', end='2020-01-9', periods=5)
})

df['duration'] = (df.deadline - df.created_date).dt.days