如何在python中将JSON转换为数据框
Posted
技术标签:
【中文标题】如何在python中将JSON转换为数据框【英文标题】:How to convert JSON to a Dataframe in python 【发布时间】: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)。它给我一个错误
【参考方案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 [以上是关于如何在python中将JSON转换为数据框的主要内容,如果未能解决你的问题,请参考以下文章