我正在学习 Python(2.7) 并尝试左连接两个 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')
or
new_train = pd.merge(train,weekdaytrain, left_on='data',right_on='data',how='left')
I get:
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
即使日期确实一致。
我寻找答案,但没有适合我的问题,你能帮助我吗?
Thanks!
我认为你需要将列转换为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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)