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