使用熊猫读取嵌套的json中的值

时间:2020-02-04 12:54:31

标签: python pandas

在归一化嵌套列之后,我想计算主题的数量。

以下是我的数据示例:

MTKView

这是我尝试过的:

0    [{'code': '8', 'name': 'Human development'}, {'code': '11', 'name': ''}]                                                                                                                                                                   
1    [{'code': '1', 'name': 'Economic management'}, {'code': '6', 'name': 'Social protection and risk management'}]                                                                                                                             
2    [{'code': '5', 'name': 'Trade and integration'}, {'code': '2', 'name': 'Public sector governance'}, {'code': '11', 'name': 'Environment and natural resources management'}, {'code': '6', 'name': 'Social protection and risk management'}]
3    [{'code': '7', 'name': 'Social dev/gender/inclusion'}, {'code': '7', 'name': 'Social dev/gender/inclusion'}]                                                                                                                               
4    [{'code': '5', 'name': 'Trade and integration'}, {'code': '4', 'name': 'Financial and private sector development'}]                                                                                                                        
Name: mjtheme_namecode, dtype: object

但是这将返回错误

from pandas.io.json import json_normalize
result = json_normalize(json_file, 'mjtheme_namecode').name.value_counts()

1 个答案:

答案 0 :(得分:0)

我认为问题在于您读取json文件的方式,mjtheme_namecode应该是一个长列表,而不是列表之类的东西。尝试将max_level = 0。另一种可能是空字段存在问题。尝试输入默认值(请参见:Pandas json_normalize and null values in JSON

我设法得到了这样的结果:

from pandas.io.json import json_normalize

mjtheme_namecode =[{'code':'8','name':'Humandevelopment'},{'code':'11','name':''},{'code':'1','name':'Economicmanagement'},{'code':'6','name':'Socialprotectionandriskmanagement'},
                   {'code':'5','name':'Tradeandintegration'},{'code':'2','name':'Publicsectorgovernance'},{'code':'11','name':'Environmentandnaturalresourcesmanagement'},{'code':'6','name':'Socialprotectionandriskmanagement'},
                   {'code':'7','name':'Socialdev/gender/inclusion'},{'code':'7','name':'Socialdev/gender/inclusion'},
                   {'code':'5','name':'Tradeandintegration'},{'code':'4','name':'Financialandprivatesectordevelopment'}]
print(mjtheme_namecode)

result = json_normalize(mjtheme_namecode).name.value_counts()
print(result)
Socialdev/gender/inclusion                  2
Socialprotectionandriskmanagement           2
Tradeandintegration                         2
Humandevelopment                            1
Publicsectorgovernance                      1
Environmentandnaturalresourcesmanagement    1
Financialandprivatesectordevelopment        1
Economicmanagement                          1
                                            1
Name: name, dtype: int64
相关问题