如果我正确读取Pandas 0.13.1的文档,那么在读取期间调用parse_dates = [<col1>,<col2>...]
时,read_csv应该会产生日期时间列。相反,我得到的是时间戳对象的列。即使应用了.to_datetime,我最终仍然使用Timestamp对象。我在这里错过了什么?如何读取字符串并将存储在数据帧中的直接转换为日期时间对象?似乎日期时间对象正在被转换为数据帧中的时间戳。
df = read_csv('Beijing_2010_HourlyPM2.5_created20140325.csv',parse_dates=['Date (LST)'])
df['Date (LST)'][0] yields
Timestamp('2010-01-01 23:00:00', tz=None)
df['Date (LST)'] = pd.to_datetime(df['Date (LST)'])
df['Date (LST)'][0] still yields
Timestamp('2010-01-01 23:00:00', tz=None)
时间戳是panda处理日期时间的方式,您可以在时间戳、日期时间64和日期时间之间移动,但使用时间戳的大部分时间都是您想要的(默认情况下panda只是为您转换它)。
注意:时间戳实际上只是epoch纳秒的int64列,即与numpy datetime64 ns相同(您将看到它是时间戳列的dtype)
如果必须强制一列日期,则可以使用to_pydatetime
方法,并通过分配对象dtype将其强制转换为一个系列,但这将比仅使用时间戳更慢,也会占用更多空间(因为日期时间本质上是元组,时间戳是int64)。