Фреймы данных объединяются по строкам - PullRequest
0 голосов
/ 16 октября 2019

У меня есть два pd df, и я хочу объединить df2 с каждой строкой df1 на основе идентификатора в df1. Конечный df должен выглядеть как в df3.

Как мне это сделать? Я попытался объединить, присоединиться и объединить и не получил желаемое.

    df1

      ID  Division 
      1     10
      2      2 
      3      4   
      ...  ...


   df2 

     Product type  Level 
       1            0
       1            1 
       1            2
       2            0
       2            1
       2            2
       2            3 


     df3
       ID   Product type Level    Division
       1      1            0          10
       1      1            1          10
       1      1            2          10
       1      2            0          10
       1      2            1          10
       1      2            2          10
       1      2            3          10
       and repeat for ID 2 and ......

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Похоже, вы ищете декартово произведение двух информационных кадров. Следующий подход должен достичь того, что вы хотите,

(df1.assign(key=1)
    .merge(df2.assign(key=1))
    .drop('key', axis=1))
0 голосов
/ 16 октября 2019

Рассмотрим такую ​​опцию:

  • установить индекс в обоих DataFrames равным 0 ,
  • выполнить внешнее объединение (для индексов, поэтому результат простодекартово произведение),
  • индекс сброса.

Код для этого:

df1.index = [0] * df1.index.size
df2.index = [0] * df2.index.size
result = df1.join(df2, how='outer').reset_index(drop=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...