在数据框中转换json列

时间:2019-12-12 17:04:59

标签: json pandas dataframe jupyter

我有一个数据框,其中两列是JSON对象。像这样:

id     choice               name    host                                
002   {'option': 'true'}    Bob     {'city': {'name': 'A'}}
003   {'option': 'false'}   Ana     {'city': {'name': 'B'}}
004   {'option': 'false'}   Nic     {'city': {'name': 'C'}}

我希望列结果仅是列choicehost中的最后一个字符串(是,否,A,B,C ...)

我能够使用以下公式将其移至列host

df['host'] = (df.loc[:, 'host']
                    .apply(lambda x: x['city']['name']))

这是成功的。但是,当我应用类似于列choice

的内容时
df['choice'] = (df.loc[:, 'choice']
                         .apply(lambda x: x['option']))

我得到TypeError: 'NoneType' object is not subscriptable

我如何获得一个choice列,其中包含“ true”和“ false”?

1 个答案:

答案 0 :(得分:1)

让我们使用str.get

df.choice.str.get('option')
0     true
1    false
2    false
Name: choice, dtype: object

df.host.str.get('city').str.get('name')
0    A
1    B
2    C
Name: host, dtype: object

首先请确保它们在您的两列中分别为object,如果没有,请通过dict

进行转换。
ast.literal_eval