Pandas/SQL连接
我想将表B中的一些数据(Pandas/SQL连接,sql,pandas,join,Sql,Pandas,Join,我想将表B中的一些数据(event\u date)添加到表A中,如下所述。它看起来像是event\u id上的联接,但是此列在两个表中都包含重复的值。两个表中都有更多的列,但为了清楚起见,我省略了它们 如何以最直接的方式在Pandas和SQL中实现预期效果 表A: id,event_id 1,123 2,123 3,456 4,456 5,456 表B: id,event_id,event_date 11,123,2017-02-06 12,456,2017-02-07 13,123,2017
event\u date
)添加到表A中,如下所述。它看起来像是event\u id
上的联接,但是此列在两个表中都包含重复的值。两个表中都有更多的列,但为了清楚起见,我省略了它们
如何以最直接的方式在Pandas和SQL中实现预期效果
表A:
id,event_id
1,123
2,123
3,456
4,456
5,456
表B:
id,event_id,event_date
11,123,2017-02-06
12,456,2017-02-07
13,123,2017-02-06
14,456,2017-02-07
15,123,2017-02-06
16,123,2017-02-06
预期结果(表A+事件日期):
您可以使用来获得所需的结果。最后,从DataFrame中只获取您感兴趣的列
df_Final = pd.merge(df1,df2,on='event_id',how='left')
print df_Final[['id_y','event_id','event_date']]
输出
id_y event_id event_date
0 1 123 2017-02-06
1 2 123 2017-02-06
2 3 456 2017-02-07
3 4 456 2017-02-07
4 5 456 2017-02-07
5 1 123 2017-02-06
6 2 123 2017-02-06
7 3 456 2017-02-07
8 4 456 2017-02-07
9 5 456 2017-02-07
10 1 123 2017-02-06
11 2 123 2017-02-06
12 1 123 2017-02-06
13 2 123 2017-02-06
使用
merge
,首先从B
In [662]: A.merge(B[['event_id', 'event_date']].drop_duplicates())
Out[662]:
id event_id event_date
0 1 123 2017-02-06
1 2 123 2017-02-06
2 3 456 2017-02-07
3 4 456 2017-02-07
4 5 456 2017-02-07
SQL部分:
select distinct a.*, b.event_date
from table_a a
join table_b b
on a.event_id = b.event_id;
select distinct a.*, b.event_date
from table_a a
join table_b b
on a.event_id = b.event_id;