Python在数据帧中读取JSON

问题描述 投票:0回答:2

我有一个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列

python sql json pandas
2个回答
2
投票

你可以使用json_normalize

pd.io.json.json_normalize(df['data'])['name']

0    bob
1    dan
2    jay
Name: name, dtype: object

1
投票

IIUC,让我们使用带有lambda函数的apply来按键从字典中选择值:

df['data'].apply(lambda x: x['name'])

输出:

0    bob
1    dan
2    jay
Name: data, dtype: object
© www.soinside.com 2019 - 2024. All rights reserved.