回答編集履歴

2

コード修正

2020/09/28 23:21

投稿

bsdfan
bsdfan

スコア4794

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- df['categories_name'] = df['categories'].apply(lambda l: ast.literal_eval(l)[-1]['name'])
13
+ df['category_name'] = df['categories'].apply(lambda s: ast.literal_eval(s)[-1]['name'])
14
14
 
15
15
  ```
16
16
 

1

evalを追加

2020/09/28 23:21

投稿

bsdfan
bsdfan

スコア4794

test CHANGED
@@ -1,3 +1,29 @@
1
+ categoriesの中身が、dictのlistではなく、文字列のままのようなので、文字列→list/dictの変換を入れる必要があります。
2
+
3
+ `eval()`してしまうのが簡単ですが、`ast.literal_eval()`を使うほうが安全です。
4
+
5
+
6
+
7
+ ```python
8
+
9
+ import ast
10
+
11
+
12
+
13
+ df['categories_name'] = df['categories'].apply(lambda l: ast.literal_eval(l)[-1]['name'])
14
+
15
+ ```
16
+
17
+
18
+
19
+
20
+
21
+ 以前の回答
22
+
23
+ ---------
24
+
25
+
26
+
1
27
  各categoriesの、listの一番最後のdictから、nameに対応する値を取り出せばいいということなので、これで必要なものが得られると思います。
2
28
 
3
29