将列转换为字典并访问

时间:2018-12-14 10:25:23

标签: python pandas dictionary

我有以下数据框:

print(df.source)

                    source
0     "{'id': None, 'name': 'Cnet.com'}",
1     "{'id': None, 'name': 'Cnet.com'}",
2     "{'id': None, 'name': 'Cnet.com'}",

...

我想访问“名称”中包含的信息,最终创建:

print(df_final.source)

                    source
0                  Cnet.com
1                  Cnet.com
2                  Cnet.com

...

我尝试过:

dictio = df["source"].to_dict()

for i in range(0, len(df)):

     dictio[i]["name"]

但是会引发错误:“ TypeError:字符串索引必须是整数”。

如何创建df_final?

2 个答案:

答案 0 :(得分:1)

通过ast将值转换为字典,然后通过get获取值:

import ast

df['source'] = df['source'].apply(lambda x: ast.literal_eval(x).get("name", 'missing value'))

或者在以后需要时使用字典列:

import ast

df['source'] = df['source'].apply(ast.literal_eval)
df['source'] = df['source'].apply(lambda x: x.get("name", 'missing value'))

答案 1 :(得分:0)

问题在于您在源列中的数据是字符串格式。 我们可以使用json包将其转换为字典格式,然后从中访问名称字段。

我认为此片段应该有效。

import json
for index, row in df.iterrows():
    sourceDict = json.loads(row['source'])
    name = sourceDict['name']