【问题标题】:How to convert JSON to a Dataframe in python如何在python中将JSON转换为数据框
【发布时间】:2017-05-25 20:25:55
【问题描述】:

我有以下 JSON 格式,我需要将其转换为 python 中的数据框。请告诉我,如何去做。

JSON:

 User Patterns
[{"Jane": [{"Thermostat": 20, "Days": [1, 2], "Hour": 6, "Minute": 43}],  
"John": [{"Thermostat": 18, "Days": [1, 2], "Hour": 0, "Minute": 15}], 
"Jen": [{"Thermostat": 22, "Days": [1, 2], "Hour": 10, "Minute": 1}]}]

我希望我的数据框看起来像:

User    Thermostat   Days     Hour   Minute
Jane    20           [1,2]    6      43  
John    18           [1,2]    0      15 
Jen     22           [1,2]    10     1

【问题讨论】:

  • 你可以使用pd.read_json(userpatterns)
  • 存储 JSON 的变量是“th_pat”。如果我做 pd.read_jso(th_pat)。它给我一个错误

标签: python json python-2.7 pandas dataframe


【解决方案1】:
jstr = """[{"Jane": [{"Thermostat": 20, "Days": [1, 2], "Hour": 6, "Minute": 43}],  
"John": [{"Thermostat": 18, "Days": [1, 2], "Hour": 0, "Minute": 15}], 
"Jen": [{"Thermostat": 22, "Days": [1, 2], "Hour": 10, "Minute": 1}]}]"""

pd.DataFrame.from_dict(
    {k: v[0] for k, v in json.loads(jstr)[0].items()}, 'index'
).rename_axis('User').reset_index()


如果要拆分Days

df = pd.DataFrame.from_dict(
    {k: v[0] for k, v in json.loads(jstr)[0].items()}, 'index'
).rename_axis('User').reset_index()

df.drop('Days', 1).join(
    pd.DataFrame(df.Days.tolist()).rename(columns='Day{}'.format))


您可以对其进行功能化:

def read_my_json(jstr):
    return pd.DataFrame.from_dict(
        {k: v[0] for k, v in json.loads(jstr)[0].items()}, 'index'
    ).rename_axis('User').reset_index()

【讨论】:

  • 谢谢,但是这个 JSON 存储在一个名为“th_pat”的变量中。并且对于每个实验,恒温器、天等的值都会改变。因此,我该怎么做
  • 当然,它奏效了。谢谢你。我有一个相关的问题,这可以在函数中返回吗?如果这样做,我会收到以下错误:NotImplementedError: Python Bridge conversion table not implemented for type []
  • 我又遇到了一个小问题。对于“天”列,它有两个值,即 [1,2]。因此,在返回时,它会抛出一个错误,因为它无法解析该列表。如何修改代码以使每个值都在单独的列中,并且值可能会增加,例如 [1,2,3] 等。所以是否有通用代码,所以这些值中的每一个都可以被视为不同的列
  • @Anagha 没问题。很高兴我能帮上忙。
  • 如果每个用户都有多条记录,我们将如何遍历 JSON?
猜你喜欢
  • 2018-11-20
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2020-05-29
  • 2021-06-20
  • 2017-05-01
相关资源
最近更新 更多