numpy / pandas日期时间

时间:2015-03-21 22:57:47

标签: python python-3.x numpy pandas

在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

我尝试使用datetime64[ns]datetime64[D]转换为mydf['DateTime'].astype('<M8[D]'),但收到错误TypeError: cannot astype a datetimelike from [datetime64[ns]] to [datetime64[D]]

我尝试了mydf['DateTime'].values.astype('<M8[D]'),它运行时没有错误。当我显示print(mydf)时,时间组件不再打印。

但是,如果我mydf.dtypesdtype显示的mydf['DateTime']保持不变,如果我尝试type mydf['DateTime'][0],它实际上会显示它是pandas.tslib.Timestamp

如果有人可以解释为什么pandas datetime64[ns]列的各个元素属于pandas.tslib.Timestamp类型以及如何正确地将pandas datetime64[ns]列转换为datetime64[D],那会很棒专栏?

或者,是否有人知道pandas是否支持datetime64[D]

P.S。这是基于J. F. Sebastian要求在每个帖子中只提出1个问题的我之前提出的问题的修改

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式将时间戳转换为YYYY-MM-DD日期:

mydf.DateTime.map(lambda x: x.date())

但是,生成的dtype为object,而不是datetime64[D]