[英]'dict of list of dict' to dataframe
我有一個字典列表的字典
{
'Col1Name': [{'date': '2020', 'value': '1111'},
{'date': '2019', 'value': '2222'},
{'date': '2018', 'value': '3333'}],
'Col2Name': [{'date': '2020', 'value': '777'},
{'date': '2018', 'value': '999'}]
}
我怎樣才能優雅地將它導入到數據框中,記住可能有缺失值?
最終結果應該是這樣的:(或轉置,無所謂)
2020 2019 2018
Col1Name 1111 2222 3333
Col2Name 777 nan 999
這是使用pandas.concat
和一個小理解的方法:
import pandas as pd
pd.concat({c: pd.DataFrame(l).set_index('date').T
for c,l in d.items()}).droplevel(1)
輸出:
date 2020 2019 2018
Col1Name 1111 2222 3333
Col2Name 777 NaN 999
輸入:
d = {
'Col1Name': [{'date': '2020', 'value': '1111'},
{'date': '2019', 'value': '2222'},
{'date': '2018', 'value': '3333'}],
'Col2Name': [{'date': '2020', 'value': '777'},
{'date': '2018', 'value': '999'}]
}
假設字典d
我們可以使用DataFrame.from_dict
將字典轉換為適當的格式,然后傳遞給DataFrame.from_dict
:
df = pd.DataFrame.from_dict(
{k: {v['date']: v['value'] for v in lst} for k, lst in d.items()},
orient='index'
)
df
:
2020 2019 2018
Col1Name 1111 2222 3333
Col2Name 777 NaN 999
如果想要另一種方式,我們可以刪除orient='index'
:
df = pd.DataFrame.from_dict(
{k: {v['date']: v['value'] for v in lst} for k, lst in d.items()}
)
df
:
Col1Name Col2Name
2020 1111 777
2019 2222 NaN
2018 3333 999
設置:
import pandas as pd
d = {
'Col1Name': [{'date': '2020', 'value': '1111'},
{'date': '2019', 'value': '2222'},
{'date': '2018', 'value': '3333'}],
'Col2Name': [{'date': '2020', 'value': '777'},
{'date': '2018', 'value': '999'}]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.