2016-10-31 4 views
2

Я изучаю Python (2.7) и пытаюсь левым присоединиться к двум кадрам данных pandas. Одна датафрейм имеет дату и соответствующую продажу продукта, а другая - дата и соответствующий день недели.Left Inner Присоединиться к Pandas

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 

Когда я делаю это:

new_train = pd.merge(train,weekdaytrain, on='data',how='left') 

или

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 

Даже если даты действительно соответствуют. Я искал ответы, но ничто не подходит для моей проблемы, вы можете мне помочь?

Спасибо!

ответ

1

Я думаю, что вам нужно преобразовать столбец datetime в обоих Dataframes, потому что кажется, есть разные dtypes - один datetime и один object (очевидно string):

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 
+0

Спасибо! @jezrael –

Смежные вопросы