2016-10-31 7 views
2

に参加します。他の日付と対応する曜日を有している 一つのデータフレームは、日付と製品の対応する売上を持っています。左内側私は、Python(2.7)を学習し、2つのパンダのデータフレームを結合左しようとしているパンダ

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

私はあなたが違うdtypesがあるようなので、両方Dataframesdatetimeに列を変換する必要があると思う - 1はdatetimeであり、1は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 –

関連する問題