我有两个数据帧,其结构如下:
|来源| #Users | #Clicks |小时|类型
和
类型|总数#用户|小时
我想基于小时加入这些列,但是第一个数据框在第二个中具有更深的粒度,因此具有更多的行。基本上我想要一个我拥有的数据框
|来源| #Users | #Clicks |小时|类型|总#个用户
其中#个用户总数来自第二个数据帧。有什么建议么?我想我可能想使用地图?
编辑:
这是一个例子
DF1
|Source|#Users|#Clicks|Hour|Type
|Prod1 |50 |3 |01 |Internet
|Prod2 |10 |2 |07 |iOS
|Prod3 |1 |50 |07 |Internet
|Prod2 |3 |2 |07 |Internet
|Prod3 |8 |2 |05 |Internet
DF2
|Type |Total #Users|Hour
|Internet|100 |01
|iOS |500 |01
|Internet|300 |07
|Internet|15 |05
|iOS |20 |07
结果
|Source|#Users|#Clicks|Hour|Type |Total #Users
|Prod1 |50 |3 |01 |Internet|100
|Prod2 |10 |2 |07 |iOS |20
|Prod3 |1 |50 |07 |Internet|300
|Prod2 |3 |2 |07 |Internet|300
|Prod3 |8 |2 |05 |Internet|15
答案 0 :(得分:2)
这是您要尝试的左连接:
df1.join(df2, (df1.Hour === df2.Hour) & (df1.Type === df2.Type), "left_outer")
简短版本:左连接保留df1
中的所有行,如果匹配则以df2
的匹配行为条件进行连接(如果不匹配则为null,如果多个匹配则重复)。