Добавление информации из маленькой таблицы в большую с Pandas - PullRequest
1 голос
/ 12 апреля 2020

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

Есть ли способ выполнить эту операцию с Pandas в Python?

Спасибо!

enter image description here

1 Ответ

0 голосов
/ 12 апреля 2020

К сожалению, встроенного метода не существует, так как вам нужно будет построить декартово произведение этих DataFrame , проверьте причудливое объяснение слияния фреймов данных в pandas

Но для Ваша конкретная c проблема, попробуйте это:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(columns=['Entity', 'Account'])
df1.Entity = ['Entity1', 'Entity1']
df1.Account = ['Sales', 'Cost']

df2 = pd.DataFrame(columns=['Region'])
df2.Region = ['North America', 'Europa', 'Asia']

def cartesian_product_simplified(left, right):
    la, lb = len(left), len(right)
    ia2, ib2 = np.broadcast_arrays(*np.ogrid[:la,:lb])

    return pd.DataFrame(
        np.column_stack([left.values[ia2.ravel()], right.values[ib2.ravel()]]))

resultdf = cartesian_product_simplified(df1, df2)
print(resultdf)

вывод:

         0      1              2
0  Entity1  Sales  North America
1  Entity1  Sales         Europa
2  Entity1  Sales           Asia
3  Entity1   Cost  North America
4  Entity1   Cost         Europa
5  Entity1   Cost           Asia

, как и ожидалось.

Кстати, укажите следующий кадр данных как код, а не как скриншот или даже как ссылка. Это помогает сэкономить время (пожалуйста, отметьте как спросить )

...