95784


下記のような構成のリストをfor loopを使ってデータフレームに格納したいのですが、リストの中にあるリストをうまく抽出することができません。

[code]

    [{'sitemap': [{'path': 'http://test.com/siteindex.xml',
        'lastSubmitted': '2017-09-28',
        'contents': [{'type': 'web', 'submitted': '4225'}]}]},
     {'sitemap': [{'path': 'https://example.com/siteindex.xml',
        'lastSubmitted': '2023-07-01',
        'contents': [{'type': 'web', 'submitted': '2939'}]}]}
    ]
    
[/code]

以下を試したのですがエラーが返ってきてしまいます。

[code]

    data_for_df = []
    
    for each in sitemaps_all:
      temp = []
      temp.append(each['sitemap'][0]['path']
      temp.append(each['sitemap'][0]['lastSubmitted'])
      temp.append(each['sitemap'][0]['contents'][0]) ##'type'を列として抽出
      temp.append(each['sitemap'][0]['contents'][1]) ##'submitted'を列として抽出
      
      data_for_df.append(temp)
    
    df = pd.DataFrame(data_for_df, columns =['path','lastSubmitted','type','submitted'])
    
[/code]

どうすればデータフレームに変換することができるでしょうか？よろしくお願いします。


CC BY-SA 4.0
2023-07-27T14:55:40.783
95783
2023-07-27T19:45:03.913
2023-07-27T19:45:03.913
3060
59282
question
python python3 dataframe
For Loopを使ってリストをデータフレームに格納する方法

[code]

    import pandas as pd
    
    sitemaps_all = [
        {'sitemap': [{'path': 'http://test.com/siteindex.xml',
                      'lastSubmitted': '2017-09-28',
                      'contents': [{'type': 'web', 'submitted': '4225'}]}]},
        {'sitemap': [{'path': 'https://example.com/siteindex.xml',
                      'lastSubmitted': '2023-07-01',
                      'contents': [{'type': 'web', 'submitted': '2939'}]}]}
    ]
    
    data_for_df = []
    
    for each in sitemaps_all:
        temp = []
        temp.append(each['sitemap'][0]['path'])
        temp.append(each['sitemap'][0]['lastSubmitted'])
        temp.append(each['sitemap'][0]['contents'][0]['type']) ##'type'を列として抽出
        temp.append(each['sitemap'][0]['contents'][0]['submitted']) ##'submitted'を列として抽出
      
        data_for_df.append(temp)
    
    df = pd.DataFrame(data_for_df, columns =['path','lastSubmitted','type','submitted'])
    print(df)
    
    #                                 path lastSubmitted type submitted
    # 0      http://test.com/siteindex.xml    2017-09-28  web      4225
    # 1  https://example.com/siteindex.xml    2023-07-01  web      2939
    
    
[/code]


CC BY-SA 4.0
2023-07-27T15:15:41.060
95784
2023-07-27T15:15:41.060
47127
95783
answer