回答編集履歴

1

追加質問への回答を追加

2021/04/30 12:08

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -31,3 +31,55 @@
31
31
  1 2000/01/02 [{'A':'300','B':'150'}] 300 150
32
32
 
33
33
  ```
34
+
35
+
36
+
37
+ エラーが出たとのことですので再現テストを行ってみました。
38
+
39
+
40
+
41
+ 以下のプログラムを流しました。
42
+
43
+ ```python
44
+
45
+ import pandas as pd
46
+
47
+ df = pd.DataFrame({'date':['2000/01/01', '2000/01/02'], '内包データ':["[{'id': 'ABCDE9999999','lastName': '鈴木', 'firstName': '太郎'}]", "[{'id': 'ABCDE8888888','lastName': '佐藤', 'firstName': '花子'}]"]})
48
+
49
+ print(df)
50
+
51
+ import ast
52
+
53
+ df['id'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['id'])
54
+
55
+ df['lastName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['lastName'])
56
+
57
+ df['firstName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['firstName'])
58
+
59
+ print(df)
60
+
61
+ ```
62
+
63
+
64
+
65
+ 実行結果は以下です。
66
+
67
+
68
+
69
+ ```python
70
+
71
+ >>> df['id'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['id'])
72
+
73
+ >>> df['lastName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['lastName'])
74
+
75
+ >>> df['firstName'] = df['内包データ'].apply(lambda x: ast.literal_eval(x)[0]['firstName'])
76
+
77
+ >>> print(df)
78
+
79
+ date 内包データ id lastName firstName
80
+
81
+ 0 2000/01/01 [{'id': 'ABCDE9999999','lastName': '鈴木', 'firs... ABCDE9999999 鈴木 太郎
82
+
83
+ 1 2000/01/02 [{'id': 'ABCDE8888888','lastName': '佐藤', 'firs... ABCDE8888888 佐藤 花子
84
+
85
+ ```