[英]How to create a nested dictionary from pandas DataFrame
我對 python 數據系列不是很實用,有人可以解釋我做錯了什么嗎?
我有這個 DataFrame:
Model | 年 | 品牌 | 數字 |
---|---|---|---|
索蘭托 | 2008年 | 起亞 | 19UYA427X1A382858 |
克爾維特 | 1968年 | 雪佛蘭 | 1C3CDFEB2FD382486 |
赭色 | 1933年 | 豐田 | YV440MBK0F1112644 |
克爾維特 | 1968年 | 起亞 | 45UYA427X1A382858 |
我需要這個 output:
{
"Kia": {
"2008": [
[
"Sorento",
"19UYA427X1A382858"
],
[
"Sorento",
"45UYA427X1A382858"
]
]
},
"Chevrolet": {
"1968": [
[
"Corvette",
"1C3CDFEB2FD382486"
]
]
}
}
所以我需要將具有相同值的項目分組到子列表中,但我不知道該怎么做。 Model 和 Year 分組正確,但我不知道如何用 Brand 和 Number 值填充最后一個列表
## this is my partial solution
d = {k: f.groupby('Year').apply(list).to_dict()
for k, f in df_clean.groupby('Brand')}
pprint.pprint(d)
Output:
'Mitsubishi': {1994.0: ['Model', 'Year', 'Brand', 'Number'],
2005.0: ['Model', 'Year', 'Brand', 'Number'],
'NO_DATA': ['Model', 'Year', 'Brand', 'Number']},
'Nissan': {1993.0: ['Model', 'Year', 'Brand', 'Number'],
1996.0: ['Model', 'Year', 'Brand', 'Number'],
2009.0: ['Model', 'Year', 'Brand', 'Number'],
2011.0: ['Model', 'Year', 'Brand', 'Number'],
2012.0: ['Model', 'Year', 'Brand', 'Number']},
'Oldsmobile': {1999.0: ['Model', 'Year', 'Brand', 'Number']},
您可以使用嵌套的groupby.apply
; 一次是品牌,一次是多年:
out = (df.groupby('Brand')
.apply(lambda x: x.groupby('Year')[['Model','Number']]
.apply(lambda y: y.to_numpy().tolist())
.to_dict())
.to_dict())
Output:
{'Chevrolet': {1968: [['Corvette', '1C3CDFEB2FD382486']]},
'Kia': {1968: [['Corvette', '45UYA427X1A382858']],
2008: [['Sorento', '19UYA427X1A382858']]},
'Toyota': {1933: [['Sienna', 'YV440MBK0F1112644']]}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.