【问题标题】:Adding information from a smaller table to a large one with Pandas使用 Pandas 将小表中的信息添加到大表中
【发布时间】:2020-07-25 08:42:37
【问题描述】:

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

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

谢谢!

【问题讨论】:

标签: python pandas alteryx


【解决方案1】:

不幸的是,不存在内置方法,因为您需要构建那些 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

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 2021-12-25
    • 2021-04-11
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多