I have two dataframes that look like:
df1:
JavaScript
x
7
1
Date Multiplier
2
0 1995-01-01 5.248256
3
1 1995-02-01 5.262376
4
2 1995-03-01 5.255998
5
3 1995-04-01 5.215762
6
4 1995-05-01 5.207806
7
df2:
JavaScript
1
7
1
PRICE Date
2
0 77500 1995-01-01
3
1 60000 1995-01-01
4
2 39250 1995-01-01
5
3 51250 1995-01-01
6
4 224950 1995-01-01
7
Both date columns have been made using the pd.to_datetime()
method, and they both supposedly have <M8[ns]
data types when using df1.Date.dtype
and df2.Date.dtype
. However when trying to merge the dataframes with pd.merge(df,hpi,how="left",on="Date")
I get the error:
ValueError: You are trying to merge on object and datetime64[ns] columns. If you wish to proceed you should use pd.concat
Advertisement
Answer
Try to convert the Date
column of df1
to a datetime64
Check dtypes
first:
JavaScript
1
10
10
1
>>> df1.dtypes
2
Date object # <- Not a datetime
3
Multiplier float64
4
dtype: object
5
6
>>> df2.dtypes
7
PRICE int64
8
Date datetime64[ns] # <- Right dtype
9
dtype: object
10
Convert and merge:
JavaScript
1
4
1
df1['Date'] = pd.to_datetime(df1['Date'])
2
3
out = pd.merge(df1, df2,how='left',on='Date')
4