Тот же вопрос, что и Получить все значения таблицы, если совпадение в 2 других таблицах существует , но пытается сделать то же самое в Python / pandas, потому что я не могу установить PK / FK в pandas при записи в базу данных SQLite (df.to_ sql не имеет API для этого), что делает SQL слишком медленным.
У меня есть «канал» данных.
channelId
a
b
c
d
кадр данных "video"
videoId | channelId
1 | a
2 | b
3 | c
4 | e
фрейм данных "комментарий"
commentID | videoID | videoID_channelID
xx | 1 | a
yy | 2 | b
zz | 5 | e
tt | 6 | f
Ключи:
- channel.channelId = video.channelId = comment.videoID_channelID
- video.videoId = comment.videoID
Мне нужно:
- все каналы, по крайней мере, с 1 видео и 1 комментарием
- все видео как минимум с 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 фреймов данных с разными индексами?