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

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)
添加回答
举报
0/150
提交
取消