我有一些数据作为元组列表,并试图找到最快的方法将其转换为Pandas数据框。
出于我们的目的,列表的长度大约为20个项目。每个元组只有两个元素,第一个是小数,第二个是字典。该词典将至少有一对,但可能有多个键(str)值(十进制)对。
以下示例:
bids = [(Decimal('10421.53'), {'d59133e6-891b-4d95-9744-046effe12096': Decimal('3')}), (Decimal('10422.87'), {'b6a51d83-f8a7-4401-b596-6abe55c5e554': Decimal('2')}), (Decimal('10424.03'), {'fbb471ad-44dc-49e8-845a-85035542115d': Decimal('2'), 'fe7e784e-2c5a-414f-9094-ca3c94aae19f': Decimal('2.5')}), (Decimal('10424.3'), {'82478287-6bde-4a0c-8283-34d0b0537479': Decimal('0.45')}), (Decimal('10424.31'), {'1d63cd02-e446-457c-89ce-7e88e1a0345a': Decimal('0.49834487')}), (Decimal('10424.32'), {'bf0b2eda-75da-4aff-a1ac-ccf36f198bd4': Decimal('0.24776675')}), (Decimal('10426.01'), {'4d12abd1-9330-4688-964e-07e5f5aa2b77': Decimal('1.21363179')}), (Decimal('10426.02'), {'613b7639-23bd-4953-9efd-0d96ef100789': Decimal('2')}), (Decimal('10426.07'), {'bd05a81a-1725-483b-80eb-2ce4b7aa843c': Decimal('0.0031')}), (Decimal('10426.12'), {'4210f639-5d54-49cb-a658-4f866e52b906': Decimal('2'), 'a31807bc-4109-4ba3-ae9a-4b04b3e650b1': Decimal('0.27650338'), '4d3bc7fd-3955-4e4a-ad46-ac688460f5be': Decimal('0.01'), 'ce85aa0b-abcf-4072-a7e7-5ec9cc9fa95f': Decimal('0.58784957'), '2d3a1f90-52b4-4d5b-8d29-4e2ba50c6447': Decimal('0.20332366')})]
精美打印:
我有一个基本的循环结构可以做到这一点:
results = []
for bid in bids:
for oid, amt in bid[1].items():
results.append({'price': bid[0], 'amount': amt, 'order': oid})
result = pd.DataFrame(results)
数据框结果:
有没有嵌套循环的更快方法吗?预先感谢!
答案 0 :(得分:0)
您的方法很好,尽管列表理解可以提高性能:
final=pd.DataFrame([{'price': bid[0], 'amount': amt, 'order': oid}
for bid in bids for oid, amt in bid[1].items()])
price amount order
0 10421.53 3 d59133e6-891b-4d95-9744-046effe12096
1 10422.87 2 b6a51d83-f8a7-4401-b596-6abe55c5e554
2 10424.03 2 fbb471ad-44dc-49e8-845a-85035542115d
3 10424.03 2.5 fe7e784e-2c5a-414f-9094-ca3c94aae19f
4 10424.3 0.45 82478287-6bde-4a0c-8283-34d0b0537479
5 10424.31 0.49834487 1d63cd02-e446-457c-89ce-7e88e1a0345a
6 10424.32 0.24776675 bf0b2eda-75da-4aff-a1ac-ccf36f198bd4
7 10426.01 1.21363179 4d12abd1-9330-4688-964e-07e5f5aa2b77
8 10426.02 2 613b7639-23bd-4953-9efd-0d96ef100789
9 10426.07 0.0031 bd05a81a-1725-483b-80eb-2ce4b7aa843c
10 10426.12 2 4210f639-5d54-49cb-a658-4f866e52b906
11 10426.12 0.27650338 a31807bc-4109-4ba3-ae9a-4b04b3e650b1
12 10426.12 0.01 4d3bc7fd-3955-4e4a-ad46-ac688460f5be
13 10426.12 0.58784957 ce85aa0b-abcf-4072-a7e7-5ec9cc9fa95f
14 10426.12 0.20332366 2d3a1f90-52b4-4d5b-8d29-4e2ba50c6447