Numpy/Pandas日期时间数据

4
在一个pandas数据框中,假设名为mydf的数据框(其值最初是从Yahoo下载的股票价格创建的),我拥有以下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]的类型,它实际上显示为pandas.tslib.Timestamp
是否有人能够解释为什么pandas datetime64[ns]列的各个元素都是pandas.tslib.Timestamp类型,以及如何正确将pandas datetime64[ns]列转换为datetime64[D]列?
另外,请问pandas是否支持datetime64[D]? p.s. 这是对我的上一个问题进行修改,以满足J.F.Sebastian的要求,每个帖子只能有1个问题。

请避免一次发布多个问题。我看到至少有三个问题可以独立回答。 - jfs
例如,我只知道3个答案中的2个,这阻止了我发布答案。 - jfs
你想移除其中的哪一个? - uday
请在每个帖子中提出一个问题。Translated text: Please ask one question per post. - jfs
删除一个问题,另外两个问题高度相关且相互关联 - 可以将它们视为具有两个部分的同一问题。 - uday
@J.F.Sebastian,根据您的建议,我已经重新改写了问题。 - uday
1个回答

0
你可以通过以下方式将时间戳转换为YYYY-MM-DD日期格式: mydf.DateTime.map(lambda x: x.date()) 然而,结果的数据类型是object,而不是datetime64[D]

2
你也可以使用 dt 访问器:mydf.DateTime.dt.date - joris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接