我有两个熊猫系列,即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
我将如何获得它?
答案 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
保留为浮点数,则可能会进行一些额外的转换和重命名。