在数据框中读取JSON的Python
问题描述:
我有一个SQL数据库,它有两列。其中有时间戳,其他保存数据以JSON格式在数据框中读取JSON的Python
例如DF:
ts data
'2017-12-18 02:30:20.553' {'name':'bob','age':10, 'location':{'town':'miami','state':'florida'}}
'2017-12-18 02:30:21.101' {'name':'dan','age':15, 'location':{'town':'new york','state':'new york'}}
'2017-12-18 02:30:21.202' {'name':'jay','age':11, 'location':{'town':'tampa','state':'florida'}}
如果我做到以下几点:
df = df['data'][0]
print (df['name'].encode('ascii', 'ignore'))
我得到:
'bob'
有没有一种方法可以获取与整个列的JSON键相对应的所有数据?
(即用于DF列 '数据' GET '名')
'bob'
'dan'
'jay'
基本上我希望能够使所谓的 '名'
答
您可以使用json_normalize
即
pd.io.json.json_normalize(df['data'])['name']
0 bob
1 dan
2 jay
Name: name, dtype: object
答
IIUC新的DF列,现在让我们使用apply
与lambda函数来者皆选择字典值:
df['data'].apply(lambda x: x['name'])
输出:
0 bob
1 dan
2 jay
Name: data, dtype: object
+0
'.apply(dict.get,args =('name',))'也可以,我想。 –
你想这是SQL SELECT语句的一部分吗?或者你可以在df ['data']中输入:print(entry ['name']。encode('ascii','ignore'))' – chrisz
我应该更清楚了,我希望结果是一个名为'name'的新df列 –
要获取列表中'name'列的所有值:'[entry ['name']。encode('ascii','ignore')用于输入df ['data ']]',那么你必须做一些事情,比如'ALTER TABLE ADD column_name datatype',然后插入你的值 – chrisz