我有一个看起来像这样的数据集:
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
所以两个表的日期格式对我来说都一样。 预先感谢。
答案 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')