Как заполнить новый фрейм данных, содержащий все возможные комбинации из элементов в двух разных таблицах - PullRequest
1 голос
/ 16 октября 2019

У меня есть две таблицы: Таблица 1:

Type
ABC
DEF

Таблица 2:

Date
12/1/2019
1/1/2020
2/1/2020

Я хотел бы заполнить новый DataFrame всеми возможными комбинациями, подобными этой:

Type    Date
ABC 12/1/2019
ABC 1/1/2020
ABC 2/1/2020
DEF 12/1/2019
DEF 1/1/2020
DEF 2/1/2020

Ответы [ 2 ]

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

Похоже, вы хотите получить декартово произведение обеих колонок здесь. Одним из способов является использование pd.MultiIndex.from_product, который создает MultiIndex из декартового произведения нескольких итераций и создает информационный кадр из индексов:

index = pd.MultiIndex.from_product([df1.Type.values, df2.Date.values], 
                                   names = ["Type", "Date"])
pd.DataFrame(index = index).reset_index()

  Type       Date
0  ABC  12/1/2019
1  ABC   1/1/2020
2  ABC   2/1/2020
3  DEF  12/1/2019
4  DEF   1/1/2020
5  DEF   2/1/2020
1 голос
/ 16 октября 2019

Будет сделано простое слияние. Хитрость заключается в том, чтобы создать фиктивный столбец (скажем, ключ) для объединения двух данных (аналогично соединению в SQL).

Демонстрация:

import pandas as pd
type_df = pd.DataFrame({'Type': ['ABC', 'DEF']})
date_df = pd.DataFrame({'Date': ['12/1/2019', '1/1/2020','2/1/2020']})
type_df['key'] = 0
date_df['key'] = 0
combo = type_df.merge(date_df, how='left', on = 'key')
combo.drop('key', 1, inplace=True)
combo

Результат:

    Type    Date
0   ABC 12/1/2019
1   ABC 1/1/2020
2   ABC 2/1/2020
3   DEF 12/1/2019
4   DEF 1/1/2020
5   DEF 2/1/2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...