我有一個看起來像這樣的資料
my_data[:5]
回傳:
[{'key': ['Aaliyah', '2', '2016'], 'values': ['10']},
{'key': ['Aaliyah', '2', '2017'], 'values': ['26']},
{'key': ['Aaliyah', '2', '2018'], 'values': ['21']},
{'key': ['Aaliyah', '2', '2019'], 'values': ['26']},
{'key': ['Aaliyah', '2', '2020'], 'values': ['15']}]
鍵代表姓名、性別和年份。值為數字。我無法生成包含列名稱、性別、年份和編號的資料框。
你能幫助我嗎?
uj5u.com熱心網友回復:
這是使用生成器的一種方法:
from itertools import chain
pd.DataFrame.from_records((dict(zip(['name', 'gender', 'year', 'number'],
chain(*e.values())))
for e in my_data))
沒有迭代工具:
pd.DataFrame(((E:=list(e.values()))[0] E[1] for e in my_data),
columns=['name', 'gender', 'year', 'number'])
輸出:
name gender year number
0 Aaliyah 2 2016 10
1 Aaliyah 2 2017 26
2 Aaliyah 2 2018 21
3 Aaliyah 2 2019 26
4 Aaliyah 2 2020 15
uj5u.com熱心網友回復:
可以遍歷list的dict。獲取所有值然后用于chain獲取串列串列并將其轉換為 DataFrame,如下所示:
>>> from itertools import chain
>>> table = [chain.from_iterable(m.values()) for m in my_data]
>>> pd.DataFrame(table, columns=['name', 'gender', 'year', 'number'])
name gender year number
0 Aaliyah 2 2016 10
1 Aaliyah 2 2017 26
2 Aaliyah 2 2018 21
3 Aaliyah 2 2019 26
4 Aaliyah 2 2020 15
# for more explanation
>>> [list(chain.from_iterable(m.values())) for m in my_data]
[['Aaliyah', '2', '2016', '10'],
['Aaliyah', '2', '2017', '26'],
['Aaliyah', '2', '2018', '21'],
['Aaliyah', '2', '2019', '26'],
['Aaliyah', '2', '2020', '15']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325905.html
