teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード修正

2020/09/28 23:21

投稿

bsdfan
bsdfan

スコア4921

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  ```python
5
5
  import ast
6
6
 
7
- df['categories_name'] = df['categories'].apply(lambda l: ast.literal_eval(l)[-1]['name'])
7
+ df['category_name'] = df['categories'].apply(lambda s: ast.literal_eval(s)[-1]['name'])
8
8
  ```
9
9
 
10
10
 

1

evalを追加

2020/09/28 23:21

投稿

bsdfan
bsdfan

スコア4921

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