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

回答編集履歴

1

追加質問への回答を追加

2021/04/30 12:08

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -14,4 +14,30 @@
14
14
  date 内包データ A B
15
15
  0 2000/01/01 [{'A':'100','B':'200'}] 100 200
16
16
  1 2000/01/02 [{'A':'300','B':'150'}] 300 150
17
+ ```
18
+
19
+ エラーが出たとのことですので再現テストを行ってみました。
20
+
21
+ 以下のプログラムを流しました。
22
+ ```python
23
+ import pandas as pd
24
+ df = pd.DataFrame({'date':['2000/01/01', '2000/01/02'], '内包データ':["[{'id': 'ABCDE9999999','lastName': '鈴木', 'firstName': '太郎'}]", "[{'id': 'ABCDE8888888','lastName': '佐藤', 'firstName': '花子'}]"]})
25
+ print(df)
26
+ import ast
27
+ df['id'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['id'])
28
+ df['lastName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['lastName'])
29
+ df['firstName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['firstName'])
30
+ print(df)
31
+ ```
32
+
33
+ 実行結果は以下です。
34
+
35
+ ```python
36
+ >>> df['id'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['id'])
37
+ >>> df['lastName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['lastName'])
38
+ >>> df['firstName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['firstName'])
39
+ >>> print(df)
40
+ date 内包データ id lastName firstName
41
+ 0 2000/01/01 [{'id': 'ABCDE9999999','lastName': '鈴木', 'firs... ABCDE9999999 鈴木 太郎
42
+ 1 2000/01/02 [{'id': 'ABCDE8888888','lastName': '佐藤', 'firs... ABCDE8888888 佐藤 花子
17
43
  ```