【发布时间】:2020-01-04 00:15:30
【问题描述】:
我有一个看起来像这样的数据框(Thing_2 被评估为一个字符串):
ID Thing Thing_2
1 abc [{"object_1": "a", "object_2": null}]
2 def None
我希望它看起来像这样:
ID Thing Thing_2
1 abc a
2 def None
为此,我执行了以下步骤:
def change_to_dict(row):
t2 = row['Thing_2']
if pd.notna(row['Thing_2']):
t2 = t2.strip('[]')
t2 = ast.literal_eval(t2)
return t2.get[0]
我不断收到 value_error: malformed node 在它不为空的索引处。我认为这是因为字典中有一个空值作为第二个值。
【问题讨论】:
-
@Priya,您的 DataFrame 是否看起来像在
Thing_2列中,它有 2 个键和两个值,您只需要从列中提取第一个值吗? -
@rafaelc 由于机密性,我无法发布确切的内容,但该列 dict 看起来像这样
'Thing_2': {0: None, 1: None, 2: '{"object_1": "a", "object_2": null}'} -
@pygo 是的,它是
-
而不是
ast.literal_eval使用json.loads。你必须先在文档顶部import json。
标签: python string pandas dictionary null