python - 如何从多个列表的每个唯一组合创建 pandas 数据框?

标签 python pandas combinations nested-lists

我正在尝试根据四个不同长度列表的每个独特组合创建一个 pandas 数据框。我是一个相对初学者。

我构建了一个嵌套的组合列表,如下所示:

combinations = [
    [
        [
            [
                [w,x,y,z]for w in sexes
            ]
            for x in ages
        ]
        for y in destination_codes
    ] 
    for z in origin_codes
]

其中每一个都是一个简单的列表。这工作正常,但我不知道如何将其放入四列框架中,每个独特的组合为一行,如下所示:

/image/q2tEl.jpg

我尝试过这个:

total = pd.DataFrame(columns=['origin', 'destination', 'age', 'sex'])
    for first in combinations:
        for second in first:
            for third in second:
                for fourth in third:
                    summary_table = pd.DataFrame({'Origin': [first], 'Destination': [second], 'Age': [third], 'Sex:' [fourth])
                    total.append(summary_table)

这根本不起作用。

任何指针都会非常有帮助 - 我不确定这是否是一个简单的错误,或者我是否以错误的方式处理整个问题。有什么想法吗?

最佳答案

这是否符合您的要求?

combinations = [
    [w,x,y,z]
    for w in sexes
    for x in ages
    for y in destination_codes
    for z in origin_codes
]
total_df = pd.DataFrame(combinations, columns=['sex', 'age', 'origin', 'destination'])

但是在这里使用列表理解可能效率很低。有一种更好的方法可以使用 itertools.product

来做到这一点
from itertools import product
combinations = list(product(ages, ages, origin_codes, destination_codes))

关于python - 如何从多个列表的每个唯一组合创建 pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57626535/

相关文章:

python - 如何防止数据在 matplotlib 散点图中拥挤在一起?

python - 迭代行并返回单元格满足阈值的列名的快速方法

python - 遍历包含列表的 pandas 列中的值并仅检索唯一值

python - 这是使用 groupby、apply 和 join 的最快/python 方式吗?

python - 使用 Python 和 Pandas 在具有不同列名的 statsmodels.formula 数据上使用 predict()

时间:2019-03-08 标签:c++combinatorics

python - 运行 Django 服务器时出错 - 空路径与其中任何一个都不匹配

python - 给定位置看到的唯一单词的累计数量的有序计数

python - 按重复元素对元组进行排序和组合

C# - 迭代数组内容的所有可能成对组合