如何使用pandas.dataframe()函数转换python的嵌套dict

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用pandas.dataframe()函数转换python的嵌套dict相关的知识,希望对你有一定的参考价值。

我无法按照我的意愿转换输出:

x = {
     "urlCrawlErrorSample": [ 
         {
           "urlDetails": {
                           "containingSitemaps": ['asff','123'],
                           "linkedFromUrls": ['xcvxcvad','89767']
                          },
           "first_detected": "A String", 
           "pageUrl": "A String", 
           "responseCode": 42, 
           "last_crawled": "A String"
         }  
      ]
     }

我申请的内容:

df = 
pandas.DataFrame.from_dict(json_normalize(x['urlCrawlErrorSample']), orient='columns')

我得到了什么,输出:

df
  first_detected last_crawled   pageUrl  responseCode urlDetails.containingSitemaps urlDetails.linkedFromUrls
0       A String     A String  A String            42                   [asff, 123]         [xcvxcvad, 89767]

期望的输出:

 df
  first_detected last_crawled   pageUrl  responseCode urlDetails.containingSitemaps urlDetails.linkedFromUrls
0       A String     A String  A String            42                          asff                  xcvxcvad
1       A String     A String  A String            42                          123                      89767
答案

解决这个问题的一种方法

x = {
 "urlCrawlErrorSample": [ 
     {
       "urlDetails": {
                       "containingSitemaps": ['asff','123'],
                       "linkedFromUrls": ['xcvxcvad','89767']
                      },
       "first_detected": "A String", 
       "pageUrl": "A String", 
       "responseCode": 42,       
 "last_crawled": "A String"
     }  
  ]
 }

a = pd.DataFrame(x['urlCrawlErrorSample']*2)
b = pd.DataFrame(x['urlCrawlErrorSample'][0]['urlDetails'])
print( pd.concat([a,b], axis=1).drop('urlDetails', axis=1) )

产量

  first_detected last_crawled   pageUrl  responseCode containingSitemaps  
0       A String     A String  A String            42               asff   
1       A String     A String  A String            42                123   

  linkedFromUrls  
0       xcvxcvad  
1          89767  

以上是关于如何使用pandas.dataframe()函数转换python的嵌套dict的主要内容,如果未能解决你的问题,请参考以下文章

如何使用累积和在 Pandas Dataframe 中执行窗口函数操作?

使用 .loc 函数错误的 Pandas DataFrame 时间索引

pandas DataFrame apply()函数

#pandas使用merge函数将两个pandas dataframe通过笛卡尔积(cartesian product)方式连接起来生成新的dataframe数据

将Dask包的Pandas DataFrame转换为单个Dask DataFrame

如何增加 pandas.DataFrame.plot 的图像大小