python - 如何从多个列表的每个唯一组合创建熊猫数据框?
问题描述
我正在尝试根据四个不同长度列表的每个唯一组合创建一个熊猫数据框。我是一个相对初学者。
我构造了一个嵌套的组合列表,如下所示:
combinations = [
[
[
[
[w,x,y,z]for w in sexes
]
for x in ages
]
for y in destination_codes
]
for z in origin_codes
]
其中每一个都是一个简单的列表。这很好用,但我不知道如何将它放入一个四列框架中,每个独特组合都有一行,如下所示:
我试过这个:
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))
推荐阅读
- amazon-web-services - ElasticSearch CloudFormation - 属性 VpcId 不能为空
- php - 显式路由怎么找不到Controller
- stm32 - 在 DMA 模式下无法从 UART 接收数据
- angular - mat-autocomplete:防止显示旧列表
- python - 如何更改数组的类型?
- tcl - 如何处理已删除命名空间中的变量?
- spring-boot - 如何在 Spring Boot 中配置连接池
- java - 使用 Spring Boot 和并行流发送电子邮件
- javascript - 如何在javascript中对数据数组进行分组和排序?
- python - 慢速 kivy 应用程序无法实时查看网络摄像头