从字典生成pandas数据帧,该字典的值是不同数量的字典的列表

泛黄酮

我需要将JSON对象解析为DataFrame。对象的格式是这样的:

 {"219": [{"year": "2015", "code": "VU", "category": "Vulnerable"}, 
          {"year": "2008", "code": "VU", "category": "Vulnerable"}, 
          {"year": "2002", "code": "VU", "category": "Vulnerable"}, 
          {"year": "1996", "code": "VU", "category": "Vulnerable"}, 
          {"year": "1994", "code": "V", "category": "Vulnerable"}, 
          {"year": "1990", "code": "V", "category": "Vulnerable"}, 
          {"year": "1988", "code": "V", "category": "Vulnerable"}, 
          {"year": "1986", "code": "V", "category": "Vulnerable"}], 
  "561": [{"year": "2016", "code": "LC", "category": "Least Concern"}, 
          {"year": "2010", "code": "LC", "category": "Least Concern"}, 
          {"year": "2006", "code": "LC", "category": "Least Concern"}, 
          {"year": "1996", "code": "EN", "category": "Endangered"}, 
          {"year": "1994", "code": "R", "category": "Rare"}, 
          {"year": "1990", "code": "R", "category": "Rare"}, 
          {"year": "1988", "code": "R", "category": "Rare"}, 
          {"year": "1986", "code": "R", "category": "Rare"}], 
  "571": [{"year": "2016", "code": "LC", "category": "Least Concern"}, 
          {"year": "2008", "code": "LC", "category": "Least Concern"}, 
          {"year": "2004", "code": "LC", "category": "Least Concern"}, 
          {"year": "1996", "code": "LR/lc", "category": "Lower Risk/least concern"}]
          }

最终,我希望DataFrame将键用作行,year列(每年一列)和code值。我不需要category此外,每个KV对可以具有可变数目的值的列表(但总是以相同的内部词典的year/ code/category结构)。

taxonid  1986 1988 1990  1994 1996 2002 2004 2006 2008 2010 2015 2016
219         V    V    V    V    VU   VU  NaN  NaN   VU  NaN   VU  NaN
561         R    R    R    R    EN  NaN  NaN   LC  NaN   LC  NaN   LC
571       NaN  NaN  NaN  NaN LR/lc  NaN   LC  NaN   LC  NaN  NaN   LC

有没有一种生成DataFrame的方法,这样我就不必首先将所有年份声明为列?并非所有年份都在这里表示,并且每当我收到JSON对象时,都有能创建更新的df的代码会很棒。

我已经看过许多SO问题,但到目前为止,没有任何问题可以帮助破解这一问题。

安德烈·凯斯利(Andrej Kesely)

如果d是您的问题字典,则此示例:

df = pd.DataFrame( ((k, *dd.values()) for k, v in d.items() for dd in v), columns=['taxid', 'year', 'code', 'category'] )
df = pd.pivot_table(df, values='code', index='taxid', columns='year', aggfunc='first')
print(df)

印刷品:

year  1986 1988 1990 1994   1996 2002 2004 2006 2008 2010 2015 2016
taxid                                                              
219      V    V    V    V     VU   VU  NaN  NaN   VU  NaN   VU  NaN
561      R    R    R    R     EN  NaN  NaN   LC  NaN   LC  NaN   LC
571    NaN  NaN  NaN  NaN  LR/lc  NaN   LC  NaN   LC  NaN  NaN   LC

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

加入数据帧,它们是包含在不同字典列表中的字典中的值

来自分类Dev

字典键的不同列表值

来自分类Dev

列表值作为多索引数据帧的字典

来自分类Dev

Python pandas:将字典的嵌套列表放入数据帧

来自分类Dev

解包数据帧字典

来自分类Dev

将字典值替换为数据帧

来自分类Dev

来自数据帧的字典的总和值

来自分类Dev

从其他pandas数据帧追加作为字典值的pandas数据帧

来自分类Dev

将包含字典的字典列表转换为Pandas数据框

来自分类Dev

如何从循环的 n 次迭代生成的 n 个字典列表中生成数据帧?

来自分类Dev

从字典值列表创建数据框

来自分类Dev

Pandas 从字典列表中创建数据框

来自分类Dev

截断字典列表值

来自分类Dev

字典值列表

来自分类Dev

字典对列表值的理解

来自分类Dev

字典值列表

来自分类Dev

替换字典的值列表

来自分类Dev

从熊猫数据帧制作字典

来自分类Dev

解压数据帧中的字典

来自分类Dev

编写字典值,该值是不带括号的列表

来自分类Dev

将字典值从列表转换为字典

来自分类Dev

如何从字典列表中的字典访问值?

来自分类Dev

获取字典列表中字典的值

来自分类Dev

列表中字典字典的数据框

来自分类Dev

从字典中大熊猫数据帧列表获取值

来自分类Dev

如何从pandas数据框创建字典的字典

来自分类Dev

字典与嵌套字典的列表

来自分类Dev

字典列表中的字典

来自分类Dev

从字典创建字典列表