Python 熊猫的左内连接

Python 熊猫的左内连接,python,pandas,merge,Python,Pandas,Merge,我正在学习Python(2.7)并尝试左键连接两个数据帧。 一个数据框具有产品的日期和相应的销售,而另一个数据框具有日期和一周中的相应日期 print type(weekdaytrain) print weekdaytrainhead(5) <class 'pandas.core.frame.DataFrame'> data giorno_settimana 0 2014-09-01 0 1 2014-09-02

我正在学习Python(2.7)并尝试左键连接两个数据帧。 一个数据框具有产品的日期和相应的销售,而另一个数据框具有日期和一周中的相应日期

print type(weekdaytrain)
print weekdaytrainhead(5)

<class 'pandas.core.frame.DataFrame'>
         data  giorno_settimana
0  2014-09-01                 0
1  2014-09-02                 1
2  2014-09-03                 2
3  2014-09-04                 3
4  2014-09-05                 4

print type(train)
print train.head(5)

<class 'pandas.core.frame.DataFrame'>
        data     pezzi
1078 2014-09-01   1743
1086 2014-09-02   1483
1094 2014-09-03   1510
1102 2014-09-04   1276
1110 2014-09-05   1741

我得到:

        data  pezzi  giorno_settimana
0 2014-09-01   1743               NaN
1 2014-09-02   1483               NaN
2 2014-09-03   1510               NaN
3 2014-09-04   1276               NaN
4 2014-09-05   1741               NaN
即使日期确实相符。 我在寻找答案,但没有一个适合我的问题,你能帮我吗


谢谢

我认为您需要将两个
数据帧中的列转换为
日期时间
,因为似乎有不同的
数据类型
——一个是
日期时间
,另一个是
对象
(显然
字符串
):


new_train = pd.merge(train,weekdaytrain, left_on='data',right_on='data',how='left') 
        data  pezzi  giorno_settimana
0 2014-09-01   1743               NaN
1 2014-09-02   1483               NaN
2 2014-09-03   1510               NaN
3 2014-09-04   1276               NaN
4 2014-09-05   1741               NaN
weekdaytrain.data = pd.to_datetime(weekdaytrain.data)
train.data = pd.to_datetime(train.data)
print (weekdaytrain.dtypes)
data                datetime64[ns]
giorno_settimana             int64
dtype: object

print (train.dtypes)
data     object
pezzi     int64
dtype: object

new_train = pd.merge(train,weekdaytrain, on='data',how='left')
print (new_train)
         data  pezzi  giorno_settimana
0  2014-09-01   1743               NaN
1  2014-09-02   1483               NaN
2  2014-09-03   1510               NaN
3  2014-09-04   1276               NaN
4  2014-09-05   1741               NaN

#column in train is not datetime, so need converting
train.data = pd.to_datetime(train.data)
new_train = pd.merge(train,weekdaytrain, on='data',how='left')
print (new_train)
        data  pezzi  giorno_settimana
0 2014-09-01   1743                 0
1 2014-09-02   1483                 1
2 2014-09-03   1510                 2
3 2014-09-04   1276                 3
4 2014-09-05   1741                 4