嵌套的字典列表和嵌套的字典列表到 Pandas 数据框
Nested list of dictionary with nested list of dictionary into a Pandas dataframe
我需要帮助将包含嵌套词典列表的嵌套词典列表转换为数据框。最后,我想要的东西看起来像(点代表中间的其他列):
id | isbn | isbn13 | .... | average_rating|
30278752 |1594634025|9781594634024| .... |3.92 |
34006942 |1501173219|9781501173219| .... |4.33 |
review_stat =[{'books': [{'id': 30278752,
'isbn': '1594634025',
'isbn13': '9781594634024',
'ratings_count': 4832,
'reviews_count': 8435,
'text_reviews_count': 417,
'work_ratings_count': 2081902,
'work_reviews_count': 3313007,
'work_text_reviews_count': 109912,
'average_rating': '3.92'}]},
{'books': [{'id': 34006942,
'isbn': '1501173219',
'isbn13': '9781501173219',
'ratings_count': 4373,
'reviews_count': 10741,
'text_reviews_count': 565,
'work_ratings_count': 1005504,
'work_reviews_count': 2142280,
'work_text_reviews_count': 75053,
'average_rating': '4.33'}]}]
如果你的键总是books
pd.concat([pd.DataFrame(i['books']) for i in review_stat])
id isbn isbn13 ratings_count reviews_count text_reviews_count work_ratings_count work_reviews_count work_text_reviews_count average_rating
0 30278752 1594634025 9781594634024 4832 8435 417 2081902 3313007 109912 3.92
0 34006942 1501173219 9781501173219 4373 10741 565 1005504 2142280 75053 4.33
如果需要,您可以随时重置索引
以下应该有效:
d=[i['books'][0] for i in review_stat]
df=pd.DataFrame(d)
我认为不需要 append
数据帧的一种更快的方法是“扁平化”列表,因为字典包含 single-key books
其中也包含一个元素。因此,应该很容易将其展平成一个可以传递给 pd.DataFrame
:
的列表
df = pd.DataFrame([x['books'][0] for x in review_stat])
输出:
id isbn ... work_text_reviews_count average_rating
0 30278752 1594634025 ... 109912 3.92
1 34006942 1501173219 ... 75053 4.33
您也可以在这里使用json_normalize
:
df = pd.json_normalize(review_stat, 'books')
[出局]
id isbn ... work_text_reviews_count average_rating
0 30278752 1594634025 ... 109912 3.92
1 34006942 1501173219 ... 75053 4.33
我需要帮助将包含嵌套词典列表的嵌套词典列表转换为数据框。最后,我想要的东西看起来像(点代表中间的其他列):
id | isbn | isbn13 | .... | average_rating|
30278752 |1594634025|9781594634024| .... |3.92 |
34006942 |1501173219|9781501173219| .... |4.33 |
review_stat =[{'books': [{'id': 30278752,
'isbn': '1594634025',
'isbn13': '9781594634024',
'ratings_count': 4832,
'reviews_count': 8435,
'text_reviews_count': 417,
'work_ratings_count': 2081902,
'work_reviews_count': 3313007,
'work_text_reviews_count': 109912,
'average_rating': '3.92'}]},
{'books': [{'id': 34006942,
'isbn': '1501173219',
'isbn13': '9781501173219',
'ratings_count': 4373,
'reviews_count': 10741,
'text_reviews_count': 565,
'work_ratings_count': 1005504,
'work_reviews_count': 2142280,
'work_text_reviews_count': 75053,
'average_rating': '4.33'}]}]
如果你的键总是books
pd.concat([pd.DataFrame(i['books']) for i in review_stat])
id isbn isbn13 ratings_count reviews_count text_reviews_count work_ratings_count work_reviews_count work_text_reviews_count average_rating
0 30278752 1594634025 9781594634024 4832 8435 417 2081902 3313007 109912 3.92
0 34006942 1501173219 9781501173219 4373 10741 565 1005504 2142280 75053 4.33
如果需要,您可以随时重置索引
以下应该有效:
d=[i['books'][0] for i in review_stat]
df=pd.DataFrame(d)
我认为不需要 append
数据帧的一种更快的方法是“扁平化”列表,因为字典包含 single-key books
其中也包含一个元素。因此,应该很容易将其展平成一个可以传递给 pd.DataFrame
:
df = pd.DataFrame([x['books'][0] for x in review_stat])
输出:
id isbn ... work_text_reviews_count average_rating
0 30278752 1594634025 ... 109912 3.92
1 34006942 1501173219 ... 75053 4.33
您也可以在这里使用json_normalize
:
df = pd.json_normalize(review_stat, 'books')
[出局]
id isbn ... work_text_reviews_count average_rating
0 30278752 1594634025 ... 109912 3.92
1 34006942 1501173219 ... 75053 4.33