Pandas 多个数据帧的内部联接

Pandas 多个数据帧的内部联接,pandas,dataframe,inner-join,Pandas,Dataframe,Inner Join,问题与Python/pandas相同,但尝试在Python/pandas中使用相同的方法,因为在写入SQLite DB时,我无法在pandas中设置PK/FK(df.to_sql没有API可以这样做),这使得sql速度太慢 我有一个数据帧“通道” 数据帧“视频” 数据帧“注释” 关键是: channel.channelId=video.channelId=comment.videoID\u channelId video.videoId=comment.videoId 我需要: 至少有1个

问题与Python/pandas相同,但尝试在Python/pandas中使用相同的方法,因为在写入SQLite DB时,我无法在pandas中设置PK/FK(df.to_sql没有API可以这样做),这使得sql速度太慢

我有一个数据帧“通道”

数据帧“视频”

数据帧“注释”

关键是:

  • channel.channelId=video.channelId=comment.videoID\u channelId
  • video.videoId=comment.videoId
我需要:

  • 至少有1个视频和1条评论的所有频道
  • 至少有一个频道和一条评论的所有视频
  • 所有评论均带有视频和频道
所以我想做3个内部连接,一个用于引用其他2个数据帧的每个数据帧

channelId
a
b

videoId | channelId
1       | a
2       | b

commentID | videoID | videoID_channelID
xx        | 1       | a
yy        | 2       | b
我知道我可以对2个数据帧进行内部连接,如:

pd.merge(channel, video, left_on='channelId', right_on='channelId', how='inner')

但我如何才能对3个索引不同的数据帧执行此操作?

合并两次如何?如上面的评论所示,对于第一次合并,您可以更简洁地重写代码:
channel.merge(video,on='channelId')
,因为它们都有相同的键列,而
internal
join是默认值。因此您的整个代码应该是:
channel.merge(video,on='channelId').merge(comment,左上=['channelId','videoId'],右上=['videoId','videoId']
该合并为我提供了所有3个数据帧中的所有列,但不提供单个数据帧中仅包含我需要的该数据帧中的列的数据帧?
commentID | videoID | videoID_channelID
xx        | 1       | a
yy        | 2       | b
zz        | 5       | e
tt        | 6       | f
channelId
a
b

videoId | channelId
1       | a
2       | b

commentID | videoID | videoID_channelID
xx        | 1       | a
yy        | 2       | b
pd.merge(channel, video, left_on='channelId', right_on='channelId', how='inner')