将列从Pandas日期对象更改为python datetime

时间:2019-09-27 16:26:03

标签: python pandas datetime

我有一个数据集,第一列的日期格式为: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'])

但是这也不起作用,检查类型时得到相同的结果。抱歉,这太基础了。

2 个答案:

答案 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]