给定任意数量的列表,我想生成一个熊猫DataFrame
作为笛卡尔积。例如,给定:
a = [1, 2, 3]
b = ['val1', 'val2']
c = [100, 101]
我想以DataFrame
,列a
,b
和c
以及所有3x2x2 = 12组合结尾。
与cartesian product in pandas不同的是,我正在寻求提供两个以上输入的功能,并且我不想传递DataFrame
,这将涉及将值保持在同一{{1} },而不是将它们组合在一起。该问题的答案可能不会与该问题的答案重叠。
与Cartesian product of x and y array points into single array of 2D points不同,我正在寻找具有命名列而不是二维numpy数组的大熊猫DataFrame
结果。
答案 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中。