使用Pandas将信息从较小的表添加到较大的表

时间:2020-04-12 19:21:29

标签: python pandas alteryx

我想将区域信息添加到包含实体和帐户列的主表中。这样,就应该复制主表中的每一行,就像Alteryx中的附加工具一样。

有没有办法在Python中对Pandas执行此操作?

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:0)

不幸的是,不存在任何内置方法,因为您需要构建那些DataFrame check that fancy explanation of merge DataFrames in pandas

的笛卡尔积。

但是对于您的特定问题,请尝试以下操作:

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

符合预期。

顺便说一句,请下次提供数据框作为代码,而不是屏幕截图或链接。它有助于节省时间(请检查how to ask