我有一个数据集,第一列的日期格式为:2011-01-01,type(data_raw['pandas_date'])
给了我pandas.core.series.Series
我想将整列转换为日期时间对象,以便可以根据需要从每一行中提取和处理年/月/日。
我使用了pd.to_datetime(data_raw['pandas_date'])
,它在输出的最后一行中用dtype: datetime64[ns]
打印了输出。我认为值已转换为日期时间。
但是当我再次运行type(data_raw['pandas_date'])
时,它仍然显示pandas.core.series.Series
,并且每当我尝试对其运行.dt
函数时,都会给我一个错误,指出它不是日期时间对象。
所以,我的问题是-好像to_datetime函数将我的数据更改为datetime对象,但是如何将其应用/保存到pandas_date列?我尝试过
data_raw['pandas_date'] = pd.to_datetime(data_raw['pandas_date'])
但是这也不起作用,检查类型时得到相同的结果。抱歉,这太基础了。
答案 0 :(得分:0)
我认为答案很简单,就是您检查数据框类型的方式。如果我这样做:
df = pd.DataFrame({'date': ['2011-01-01','2011-01-02','2011-01-13']})
new = pd.to_datetime(df['date'])
type(new)
您将获得对象的“整体”类型,这是一个熊猫系列。但是,如果您这样做:
new.dtypes
您将获得dtype('<M8[ns]')
(日期时间对象)。这是因为dtypes
将列出数据框的每一列中包含的数据类型,而type仅告诉您它是一个数据框。
答案 1 :(得分:0)
type(data_raw['pandas_date'])
将始终返回pandas.core.series.Series
,因为对象data_raw['pandas_date']
的类型为pandas.core.series.Series
。您想要的是获得dtype
,因此您可以只进行data_raw['pandas_date'].dtype
。
data_raw['pandas_date'] = pd.to_datetime(data_raw['pandas_date'])
这是正确的,如果此后再次执行data_raw['pandas_date'].dtype
,您将看到它是datetime[64]
。