我有一個字典串列,其中包含串列中的值,我想將其轉換為資料框,如下所示:
data_list = [
{'Width':[20,25,30,40],'Length':[21,22,23,24],'Ratio':[1.05,0.88,0.767,0.6]},
{'Width':[10,15,24,35],'Length':[20,25,30,40],'Ratio':[2,1.67,1.25,1.14]}
]
我嘗試使用pd.DataFrame.from_dict(data_list),但是,結果是不希望的,如下所示:
| | Width | Length | Ratio |
|---| -------------- | ------------ | --------------------- |
| 0 | [20,25,30,40] | [21,22,23,24] | [1.05,0.88,0.767,0.6] |
| 1 | [10,15,24,35] | [20,25,30,40] | [2,1.67,1.25,1.14] |
我的期望如下:
| | Width | Length | Ratio |
|---| ----- | ------ | ----- |
| 0 | 20 | 21 | 1.05 |
| 1 | 25 | 22 | 0.88 |
......
| 6 | 24 | 30 | 1.25 |
| 7 | 35 | 40 | 1.14 |
任何幫助都會很棒!謝謝!
uj5u.com熱心網友回復:
使用評論中的解決方案:
df = pd.DataFrame(data_list).apply(pd.Series.explode).reset_index(drop=True)
print (df)
Width Length Ratio
0 20 21 1.05
1 25 22 0.88
2 30 23 0.767
3 40 24 0.6
4 10 20 2
5 15 25 1.67
6 24 30 1.25
7 35 40 1.14
另一個想法是使用defaultdictwith extend, last pass 到DataFrame建構式以提高性能:
from collections import defaultdict
d = defaultdict(list)
for di in data_list:
for k, v in di.items():
d[k].extend(v)
df = pd.DataFrame(d)
print (df)
Width Length Ratio
0 20 21 1.050
1 25 22 0.880
2 30 23 0.767
3 40 24 0.600
4 10 20 2.000
5 15 25 1.670
6 24 30 1.250
7 35 40 1.140
uj5u.com熱心網友回復:
我認為如果您不需要索引,這可以滿足您的需求。
import pandas as pd
data_list = [
{'Width':[20,25,30,40],'Length':[21,22,23,24],'Ratio':[1.05,0.88,0.767,0.6]},
{'Width':[10,15,24,35],'Length':[20,25,30,40],'Ratio':[2,1.67,1.25,1.14]}
]
for data in data_list:
df = df.append(pd.DataFrame(data))
uj5u.com熱心網友回復:
另一種選擇是連接資料幀串列:
pd.concat([pd.DataFrame(ent) for ent in data_list], ignore_index = True)
Width Length Ratio
0 20 21 1.050
1 25 22 0.880
2 30 23 0.767
3 40 24 0.600
4 10 20 2.000
5 15 25 1.670
6 24 30 1.250
7 35 40 1.140
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323921.html
