python - TypeError:不能从 [datetime64[ns]] 到 [timedelta64[D]] 键入 datetimelike
问题描述
所以我试图计算两天之间的持续时间,但我只想要持续时间的天数而不是分钟和秒。我正在使用的代码如下:
df['duration']=df['deadline'].sub(df['created_at'].astype('datetime64[D]'))
但是,这给了我这样的感觉:35 天 12:42:40。但我不想要“天 12:42:40”。相反,我想将 35 提取为整数。所以我尝试用 [timedelta64[D] 替换 datetime64[D],这给了我 TypeError。我有什么办法可以做到这一点吗?
解决方案
解决此问题的最 Pythonic 和最简单的方法是将两个系列相减,然后访问系列上的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
推荐阅读
- javascript - 模块解析失败:意外的令牌 vanilla js
- c++ - 前进或移动或不前进;如何在类的使用情况下确定哪个是首选?
- postgresql - 合并不同模式PostgreSQL中的不同数据库
- c++ - 配置文件引导优化 - __gcov
- php - 如何在 PHP 7 中使用子数组键值对关联数组进行排序
- elasticsearch - 无法从 Elasticsearch 获取 [data] 集群的许可证信息
- c# - WPF - MVVM 和切换视图到一个主视图
- v8 - V8:隔离与嵌入的 blob 不兼容
- r-markdown - 如何从 RMarkdown 指定 HTML5 输出以获取语义元素,例如
? - java - 检查两个列表的相等性抛出 IndexOutOfBoundsException