我有這個串列,其中包含字典串列:
my_list = [
[{'id': '1D1', 'name_id': 'Ethan', 'manager': 'John', 'employee_details': None},
{'id': '1D2', 'name_id': 'Kevin', 'manager': 'Helen',
'employee_details': "(EmployeeDetail(id='1D2.0', partner='Jenny', children = ['Eva']),)"},
{'id': '1D3', 'name_id': 'Richard', 'manager': 'Robert',
'employee_details': "(EmployeeDetail(id='1D3.0', partner='Roberta', children= ['Noah', 'Elvis']),)"}
],
[{'id': '1D4', 'name_id': 'Liam', 'manager': 'John', 'employee_details': None},
{'id': '1D5', 'name_id': 'William', 'manager': 'Benjamin',
'employee_details': "(EmployeeDetail(id='1D5.0', partner='Emma', children = ['Amelia']),)"}
]
]
預期輸出,陣列串列:
[array([['1D1', 'Ethan', 'John', None],
['1D2', 'Kevin', 'Helen',
"(EmployeeDetail(id='1D2.0', partner='Jenny', children = ['Eva']),)"],
['1D3', 'Richard', 'Robert',
"(EmployeeDetail(id='1D3.0', partner='Roberta', children= ['Noah', 'Elvis']),)"]],
dtype=object),
array([['1D4', 'Liam', 'John', None],
['1D5', 'William', 'Benjamin',
"(EmployeeDetail(id='1D5.0', partner='Emma', children = ['Amelia']),)"]
我可以使用以下代碼實作預期的輸出:
import pandas as pd
import numpy as np
my_arrays = [np.array(pd.DataFrame(l)) for l in my_list.__iter__()]
%timeit my_arrays = [np.array(pd.DataFrame(l)) for l in my_list.__iter__()]
每個回圈 881 μs ± 24.4 μs(7 次運行的平均值 ± 標準偏差,每次 1000 次回圈)
我的問題是我想以更有效的方式執行此操作,因為我的實際資料有數千個嵌套串列,并且需要大量時間來運行。有沒有更好的方法來達到這個結果?非常感謝你!
uj5u.com熱心網友回復:
我不認為它比嵌套串列理解更快。pandas這里沒有必要。
result = [np.array([list(d.values()) for d in sublist]) for sublist in my_list]
這假設您所有的詞典共享相同的順序(例如'id',總是在最前面)。
uj5u.com熱心網友回復:
只需使用嵌套串列理解:
out = [[np.array(list(d.values())) for d in lst] for lst in my_list]
在我的機器上,
%timeit -n 100000 [[np.array(list(d.values())) for d in lst] for lst in my_list]
16.4 μs ± 896 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit -n 100000 [np.array(pd.DataFrame(l)) for l in my_list.__iter__()]
1.1 ms ± 247 μs per loop (mean ± std. dev. of 7 runs, 100000 loops each)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386206.html
下一篇:Pandas資料框聚合
