繁体   English   中英

将字典的嵌套列表与字典的嵌套列表放入 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

如果需要,您可以随时重置索引

您还可以在此处使用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

我相信一种无需append数据框的更快方法是“展平”列表,因为字典包含单键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

以下应该工作:

d=[i['books'][0] for i in review_stat]

df=pd.DataFrame(d)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM