使用键合并两个Pandas系列

时间:2017-02-15 12:33:55

标签: python pandas merge

我有两个熊猫系列,即x和y。

x.head()给出:

   user  hotel  rating      id
0  1      1253       5  2783_1253
1  4       589       5   2783_589
2  5      1270       4  2783_1270
3  3      1274       4  2783_1274
4  2       741       5   2783_741

y.head()给出:

 UserID Gender   Age  Occupation Zip Code
0     1.0      F  18.0      10.0    48067
1     2.0      M  56.0      16.0    70072
2     3.0      M  25.0      15.0    55117
3     4.0      M  45.0       7.0     2460
4     5.0      M  25.0      20.0    55455

我需要的是将这两个列合并到user = UserID。

例如,我的第一行应如下所示:

   user  hotel  rating      id         UserID Gender   Age  Occupation Zip Code
0  1    1253      5      2783_1253     1.0      F     18.0     10.0     48067

我将如何获得它?

2 个答案:

答案 0 :(得分:2)

我认为您需要先将float列转换为int,然后转换为merge

y['user'] = y.UserID.astype(int)
df = pd.merge(x,y, on='user')
print (df)
   user  hotel  rating         id  UserID  Gender Age  Occupation   Zip   Code
0     1   1253       5  2783_1253     1.0     2.0   M        56.0  16.0  70072
1     4    589       5   2783_589     4.0     5.0   M        25.0  20.0  55455
2     3   1274       4  2783_1274     3.0     4.0   M        45.0   7.0   2460
3     2    741       5   2783_741     2.0     3.0   M        25.0  15.0  55117

或将两列都转换为float

x['UserID'] = x.user.astype(float)
df = pd.merge(x,y, on='UserID')
print (df)
   user  hotel  rating         id  UserID  Gender Age  Occupation   Zip   Code
0     1   1253       5  2783_1253     1.0     2.0   M        56.0  16.0  70072
1     4    589       5   2783_589     4.0     5.0   M        25.0  20.0  55455
2     3   1274       4  2783_1274     3.0     4.0   M        45.0   7.0   2460
3     2    741       5   2783_741     2.0     3.0   M        25.0  15.0  55117

答案 1 :(得分:1)

您正在寻找的是加入。你会在这里找到你的答案:http://pandas.pydata.org/pandas-docs/version/0.19.2/generated/pandas.DataFrame.join.html(它就像在SQL中一样)。 但是,如果您希望将user保留为整数并将UserID保留为浮点数,则可能会进行一些额外的转换和重命名。