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

时间:2018-08-22 03:05:13

标签: python string list pandas dictionary

我在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]

需要任何帮助

2 个答案:

答案 0 :(得分:0)

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)

答案 1 :(得分:0)

遍历数据框,遍历列的名称,`:

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])