【发布时间】:2015-05-25 04:34:11
【问题描述】:
在 pandas 数据框中,比如 mydf(我最初从雅虎下载的股票价格创建的值),我有以下 dtypes:
Close float64
DateTime datetime64[ns]
High float64
Low float64
Open float64
Volume float64
DateTime 列同时包含日期和时间组件,即2015-03-20 00:00:28,但我只想保留日期部分,即2015-03-20。
我尝试使用mydf['DateTime'].astype('<M8[D]') 将datetime64[ns] 转换为datetime64[D],但出现错误TypeError: cannot astype a datetimelike from [datetime64[ns]] to [datetime64[D]]。
我尝试了 mydf['DateTime'].values.astype('<M8[D]') 并且它运行时没有错误。当我显示print(mydf) 时,时间组件不再打印。
但是,如果我执行mydf.dtypes,则为mydf['DateTime'] 显示的dtype 保持不变,如果我尝试mydf['DateTime'][0] 的type,它实际上表明它是pandas.tslib.Timestamp。
如果有人能解释为什么 pandas datetime64[ns] 列的各个元素是 pandas.tslib.Timestamp 类型以及如何正确地将 pandas datetime64[ns] 列转换为 datetime64[D] 列,那就太好了?
另外,有谁知道 pandas 是否支持datetime64[D]?
附言这是根据 J. F. Sebastian 要求在每个帖子中只放 1 个问题对我之前问题的修改
【问题讨论】:
-
请避免每个帖子出现多个问题。我在这里看到至少三个可以独立回答的问题。
-
例如,我只知道 3 个答案中的 2 个,这会阻止我发布答案。
-
您希望移除 3 个中的哪个?
-
删除了 1 个问题。另外两个高度相关并且彼此相关 - 可以将它们视为具有两个部分的同一个问题。
标签: python python-3.x numpy pandas