我有一个SQL数据库,它有两列。一个有时间戳,另一个有JSON格式的数据
例如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列'data'get'name')
'bob'
'dan'
'jay'
基本上我希望能够创建一个名为'name'的新df列
你可以使用json_normalize
即
pd.io.json.json_normalize(df['data'])['name']
0 bob
1 dan
2 jay
Name: name, dtype: object
IIUC,让我们使用带有lambda函数的apply
来按键从字典中选择值:
df['data'].apply(lambda x: x['name'])
输出:
0 bob
1 dan
2 jay
Name: data, dtype: object