为了账号安全,请及时绑定邮箱和手机立即绑定

尝试从字典列表中的键检索值时出现 TypeError

尝试从字典列表中的键检索值时出现 TypeError

慕沐林林 2021-05-31 06:00:51
我在 Pandas DataFrame 中有一组字典: 0      [{'id': 16, 'name': 'Animation'}, {'id': 35, 'name': 'Comedy'}, {'id': 10751, 'name': 'Family'}]                                                                                                      1      [{'id': 12, 'name': 'Adventure'}, {'id': 88, 'name': 'Fantasy'}, {'id': 10751, 'name': 'Family'}]                                                                                                     2      [{'id': 10749, 'name': 'Romance'}, {'id': 77, 'name': 'Horror'}]     我试图将所有名称从一行中提取到一个简单的字符串列表中,例如:数据集中每一行的“恐怖、家庭、戏剧”等。我试过这段代码,但我收到错误:字符串索引必须是整数for y in df:    names = [x['name'] for x in y]任何帮助是appriciated
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

遍历一个数据帧迭代的名字列,`的:


In [15]: df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6]})


In [16]: df

Out[16]:

   a  b

0  1  4

1  2  5

2  3  6


In [17]: for x in df:

    ...:     print(x)

    ...:

a

b

它就像一个dict会迭代它的键。


您需要以下内容:


df['your_column'].apply(lambda x: [d['name'] for d in x])


查看完整回答
反对 回复 2021-06-01
?
12345678_0001

TA贡献1802条经验 获得超5个赞

IIUC,这是字典而不是列表。你应该使用.get


[[y.get('name') for y in x ]for x in df['your columns']]

Out[578]: 

[['Animation', 'Comedy', 'Family'],

 ['Adventure', 'Fantasy', 'Family'],

 ['Romance', 'Horror']]

转换str


import ast

df.a=df.a.apply(ast.literal_eval)


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号