熊猫中任意列表的笛卡尔积

时间:2019-10-04 19:16:43

标签: python pandas

给定任意数量的列表,我想生成一个熊猫DataFrame作为笛卡尔积。例如,给定:

a = [1, 2, 3]
b = ['val1', 'val2']
c = [100, 101]

我想以DataFrame,列abc以及所有3x2x2 = 12组合结尾。

cartesian product in pandas不同的是,我正在寻求提供两个以上输入的功能,并且我不想传递DataFrame,这将涉及将值保持在同一{{1} },而不是将它们组合在一起。该问题的答案可能不会与该问题的答案重叠。

Cartesian product of x and y array points into single array of 2D points不同,我正在寻找具有命名列而不是二维numpy数组的大熊猫DataFrame结果。

1 个答案:

答案 0 :(得分:2)

this answer上建立相关问题(两个DataFrame的笛卡尔积)的基础上,此函数采用列表字典并返回笛卡尔积:

DataFrame

示例:

def cartesian_product(d):
    index = pd.MultiIndex.from_product(d.values(), names=d.keys())
    return pd.DataFrame(index=index).reset_index()

我已将此添加到我的microdf package中。