Внутреннее объединение для нескольких фреймов данных - PullRequest
2 голосов
/ 17 января 2020

Тот же вопрос, что и Получить все значения таблицы, если совпадение в 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 фреймов данных с разными индексами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...