【发布时间】:2020-07-25 08:42:37
【问题描述】:
【问题讨论】:
-
这能回答你的问题吗? Pandas Merging 101
【问题讨论】:
不幸的是,不存在内置方法,因为您需要构建那些 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)
【讨论】: