Python 嵌套JSON:pandas.JSON_规范化和错误不可破坏类型:';dict';
这里我从请求-响应中得到了一个嵌套的JSON,如下所示:Python 嵌套JSON:pandas.JSON_规范化和错误不可破坏类型:';dict';,python,json,pandas,dataframe,json-normalize,Python,Json,Pandas,Dataframe,Json Normalize,这里我从请求-响应中得到了一个嵌套的JSON,如下所示: { 'code': 0, 'daily_stats': [{'consume_data': {'fans_go_detail_count': 0, 'fans_impression_count': 215, 'fans_play_count': 7,
{
'code': 0,
'daily_stats': [{'consume_data': {'fans_go_detail_count': 0,
'fans_impression_count': 215,
'fans_play_count': 7,
'go_detail_count': 0,
'impression_count': 226,
'play_count': 8},
'date': '2020-06-22'}],
'jump_rate': [],
'message': 'success',
'total_stat': {'consume_data': {'fans_go_detail_count': 0,
'fans_impression_count': 215,
'fans_play_count': 7,
'go_detail_count': 0,
'impression_count': 226,
'play_count': 8},
'consume_detail': {'click_rate': 0.035398230088495575,
'read_complete_rate': 0,
'read_duration': 111},
'fans_change_count': 0,
'fans_data': {},
'interaction_data': {},
'ranking_data': {}}}
我想要一个扁平的df,比如:
日期、每日统计数据、消费数据、粉丝人数、消费详情、点击率等
将其输入pandas.json_normalize我得到:
df = pd.json_normalize(r.json())
list(df)
['code',
'daily_stats',
'jump_rate',
'message',
'total_stat.consume_data.fans_go_detail_count',
'total_stat.consume_data.fans_impression_count',
'total_stat.consume_data.fans_play_count',
'total_stat.consume_data.go_detail_count',
'total_stat.consume_data.impression_count',
'total_stat.consume_data.play_count',
'total_stat.consume_detail.click_rate',
'total_stat.consume_detail.read_complete_rate',
'total_stat.consume_detail.read_duration',
'total_stat.fans_change_count']
问题:
unhashable type: 'dict'
当然,我可以手动将每个循环解包到dfs,然后连接并转换为一个平面循环,但我觉得有一种方法可以轻松完成此操作。- 将
作为r
给定dict
#将r加载到数据帧中
df=pd.json\u规范化(r)
#用列表分解列
df=df.apply(lambda x:x.explode()).reset_索引(drop=True)
#在每日统计中扩展dicts并将其加入df
df=df.join(pd.json_normalize(df.daily_stats)).drop(columns=['daily_stats']))
#显示(df)
代码跳转\u比率消息总计\u统计。消耗\u数据。粉丝\u详情\u计数总计\u统计。消耗\u数据。粉丝\u印象\u计数总计\u统计。消耗\u数据。粉丝\u播放\u计数总计\u统计。消耗\u数据。总计\u统计。消耗\u数据。印象\u计数总计\u统计。消耗\u数据。播放\u计数总计\u统计。消耗\u详情。单击\u比率总统计数据。消耗详细数据。读取完成率总统计数据。消耗详细数据。读取持续时间总统计数据。粉丝更改计数日期消耗数据。粉丝去细节去细节去计数消耗数据。粉丝去印象去计数消耗数据。粉丝去游戏去计数消耗数据。粉丝去细节去计数消耗数据。印象去计数消耗数据。游戏去计数
0 0 NaN成功0 215 7 0 226 8 0.035398 0 111 0 2020-06-22 0 215 7 0 226 8
其他资源
- 将
作为r
给定dict
#将r加载到数据帧中
df=pd.json\u规范化(r)
#用列表分解列
df=df.apply(lambda x:x.explode()).reset_索引(drop=True)
#在每日统计中扩展dicts并将其加入df
df=df.join(pd.json_normalize(df.daily_stats)).drop(columns=['daily_stats']))
#显示(df)
代码跳转\u比率消息总计\u统计。消耗\u数据。粉丝\u详情\u计数总计\u统计。消耗\u数据。粉丝\u印象\u计数总计\u统计。消耗\u数据。粉丝\u播放\u计数总计\u统计。消耗\u数据。总计\u统计。消耗\u数据。印象\u计数总计\u统计。消耗\u数据。播放\u计数总计\u统计。消耗\u详情。单击\u比率总统计数据。消耗详细数据。读取完成率总统计数据。消耗详细数据。读取持续时间总统计数据。粉丝更改计数日期消耗数据。粉丝去细节去细节去计数消耗数据。粉丝去印象去计数消耗数据。粉丝去游戏去计数消耗数据。粉丝去细节去计数消耗数据。印象去计数消耗数据。游戏去计数
0 0 NaN成功0 215 7 0 226 8 0.035398 0 111 0 2020-06-22 0 215 7 0 226 8
其他资源
unhashable type: 'dict'