使用to_datetime将数据框对象转换为日期

时间:2018-12-20 12:37:11

标签: pandas datetime dataframe merge

我有一个看起来像这样的数据集:

    date        id
0   2014-01-01  11000929
1   2014-01-01  11000190
2   2014-01-01  11000216
3   2014-01-01  11000822
4   2014-01-01  11000971
5   2014-01-01  11000721
6   2014-01-01  11000970
7   2014-01-01  11000574
8   2014-01-01  11000967
9   2014-01-01  11000172
10  2014-01-01  11000208
11  2014-01-01  11000966
12  2014-01-01  11000344
13  2014-01-01  11000965
14  2014-01-01  11000935
15  2014-01-01  11000964
16  2014-01-01  11000741
17  2014-01-01  11000868
18  2014-01-01  11000035
19  2014-01-01  11000203
20  2014-01-02  11000574

如您所见,不同产品的日期时间很多,我将将此表与另一个表合并,这需要将当前和对象的日期列转换为datetime64 [ns]。

我尝试了

df_date_id.date = pd.to_datetime(df_date_id.date)

但是我最终遇到了错误:

TypeError: <class 'pandas._libs.tslibs.period.Period'> is not convertible to datetime

p.s:我要与之合并的表如下:

    date        id          score
0   2014-01-01  11000035    75
1   2014-01-02  11000035    84
2   2014-01-03  11000035    55

所以两个表的日期格式对我来说都一样。 预先感谢。

2 个答案:

答案 0 :(得分:3)

我认为有必要使用to_timestamp将时间段转换为日期时间:

df['date'] = df['date'].dt.to_timestamp()
print (df['date'].dtypes)
datetime64[ns]

另一种解决方案是将另一个DataFrame中的列转换为如下周期:

df2['date'] = df2['date'].dt.to_period('d')

答案 1 :(得分:1)

通过指定格式为我工作:

df.date = pd.to_datetime(df.date, format='%Y-%M-%d')

     date                 id
0 2014-01-01 00:01:00  11000929
1 2014-01-01 00:01:00  11000190
2 2014-01-01 00:01:00  11000216
3 2014-01-01 00:01:00  11000822
4 2014-01-01 00:01:00  11000971

如果不尝试:

df.date = pd.to_datetime(df.date.astype(str), format='%Y-%M-%d')