Python 熊猫连接两个数据帧,其中一个是数据透视表

Python 熊猫连接两个数据帧,其中一个是数据透视表,python,pandas,Python,Pandas,假设我有两个数据帧,如下所示: df1: movieID 1 2 3 4 userID 0 2 0 0 2 1 1 1 4 0 2 0 2 3 0 3 1 2 0 0 及 我试图实现的是将两者结合起来,以便df2包含一个新列,其中包含特定电影的用户相关评级。因此,在本例中,df2将变成: df2: userID movieID rating 0 0 2 0 1 0 3 0

假设我有两个数据帧,如下所示:

df1:
movieID 1 2 3 4
userID
0       2 0 0 2
1       1 1 4 0
2       0 2 3 0
3       1 2 0 0

我试图实现的是将两者结合起来,以便
df2
包含一个新列,其中包含特定电影的用户相关评级。因此,在本例中,
df2
将变成:

df2:
   userID movieID rating
0       0       2      0
1       0       3      0
2       0       4      2
3       1       3      4
我不相信简单地将
df2
重新格式化为与
df1
具有相同的形状会起作用,因为无法保证它将具有所有的用户ID或电影ID,我已经研究了
merge
函数,但我不知道在这种情况下如何设置
how
on
参数。如果有人能解释我是如何做到这一点的,我将不胜感激。

您可以通过
索引
df1.loc[row.userID,row.movieID]

只需确保
df1.columns
dtype
匹配
df2.userID
,并且
df2.movieID
匹配
df1.index

df1.columns=df1.columns.astype(df2.movieID.dtype)
df1.index=df1.index.astype(df2.userID.dtype)
df2['rating']=df2.apply(lambda行:df1.loc[row.userID,row.movieID],axis=1)
#用户ID电影ID分级
# 0       0        2       0
# 1       0        3       0
# 2       0        4       2
# 3       1        3       4
df2:
   userID movieID rating
0       0       2      0
1       0       3      0
2       0       4      2
3       1       3      4