【问题标题】:Converting JSON data to a pandas DataFrame将 JSON 数据转换为 pandas DataFrame
【发布时间】:2023-03-31 08:50:02
【问题描述】:

如果我有一个 dict 对象列表,我可以这样做来创建我的数据框:

my_dict_list = [dict1, dict2, dict3, ...]

cols = ['columnA', 'columnB', 'columnC'] # I choose which keys I want to keep

df = pd.DataFrame(my_dict_list, columns=cols)

它就像一个魅力。

但就我而言,对于某些特定键,dicts 值包含一些其他 dicts,我想保留这些键的一些键来创建我的列数据框。

我一直在努力寻找解决方案,但我失败了

这是摘录:

我列表的前 3 个条目:https://wetransfer.com/downloads/8ba8d89ec70def6f46e8d6ca01ef553420170902233517/44ad5f

【问题讨论】:

  • 你有什么问题?
  • 您的字典的结构是什么?请提供一些样品。
  • @ScottBoston 这是推文列表。列表的每个条目都是一个字典,其中包含一些键,例如“时间”、“文本”、“位置”等。但是名为“用户”的键是一个字典,其中包含一个键列表,例如“名称”、“屏幕名称”、“位置”等。
  • @NicoDesh 如果您可以在您的列表中提供大约 2-3 个字典作为数据,我们可以提供帮助。我想我知道你需要什么。
  • 请以文本形式...! print(data)

标签: python json pandas dataframe


【解决方案1】:

使用pd.io.json.json_normalize 和一些预处理:

import pandas as pd

cols = ['created_at', 'text', 'user']
user_cols = ['name', 'screen_name']

data2 = [{k : x[k] for k in cols} for x in data]    
for d in data2:
     d['user'] = {k : d['user'][k] for k in user_cols}

out = pd.io.json.json_normalize(data2)\
          .rename(columns=lambda x: x.replace(r'user.', ''))
print(out)

                       created_at  \
0  Sat Sep 02 07:10:33 +0000 2017   
1  Fri Sep 01 19:58:18 +0000 2017   
2  Fri Sep 01 18:53:27 +0000 2017   

                                                text            name  \
0  @SitePenalise On pourrait rajouter Les EMD son...  Régis Stéphant   
1  Possible de recevoir la dernière version à jou...  Pierrick Butty   
2  Les sites placés en page 1 sur mots clés à for...   Site Pénalisé   

     screen_name  
0      Ledzep_56  
1  pierrickbutty  
2   SitePenalise 

【讨论】:

    猜你喜欢
    • 2017-07-20
    • 2021-05-17
    • 2020-12-21
    • 2017-04-13
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多