我有一个数据框,其中两列是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'}}
我希望列结果仅是列choice
和host
中的最后一个字符串(是,否,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”?
答案 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