前提・実現したいこと
PythonでAPI取得しjson_normalizeでdataframeにしたところ
この要素の中に、さらに辞書型が文字列として入っているため、これをカラムに追加したい
※以下のイメージ
df
date | 内包データ |
---|---|
2000/01/01 | "[{'A':'100','B':'200'}]" |
↓
やりたいこと
date | 内包データ | A | B |
---|---|---|---|
2000/01/01 | "[{'A':'100','B':'200'}]" | 100 | 200 |
この「内包データ」をdf2と取り出し、カラム追加したいと思うが
Dataframeとして抽出できなく困っています。
該当のソースコード
python
1※pandas as pd 2df = pd.json_normalize( 取得.json() , record_path='data') 3 4※以下失敗した例 5df2 = pd.DataFrame(df['内包データ']) 6df2 = pd.Series(df['内包データ']) 7df2 = pd.DataFrame(df['内包データ'])
dfは問題なくDataframeとして扱える。
上記失敗で気づいたのがdfの内包データのカラムが
そもそもリストでも辞書型でもなく、文字列になっているのが原因と思うが解消ができず
ご教示願います。
(4/30_19:45)ご質問いただきましたので、内容追記します。
取得.json()から確認したところ
以下のような内容でした。ダミーに編集してます。
Python
1{"hasMore": false, "nextPageToken": null, 2"data": [{"id": "AAAAA9999999999", 3 "registeredTime": "2021-04-30T19:19:05+09:00", 4 "updatedTime": "2021-04-30T19:19:06+09:00", 5 "owner": {"id": "ABCDE", "name": "SATO", "email": "dammy@dammy.co.jp"}, 6 "external": [{"id": "AAAAA9999999999", 7 "personId": "AAAAA88888888888888", 8 "lastName": "SUZUKI", 9 "firstName": "TARO"}], 10 …略 }
”data”のカラムをdfとして取得するまでは問題ありませんでした。
「内包データ」と言っていたものは
data内の"external"や"owner"の箇所です。
メールアドレスや日付など、怪しげな半角記号があったので残しましたが
その他の日本語部分などはすべて省略してます
再追記
Python
1dat = r.json()['data'][0] 2 print(json.dumps(dat))
の結果を追記いたします。
Python
1{"id": "AAAAA9999999999", 2 "registeredTime": "2021-04-30T19:19:05+09:00", 3 "updatedTime": "2021-04-30T19:19:06+09:00", 4 "owner": {"id": "ABCDE", "name": "SATO", "email": "dammy@dammy.co.jp"}, 5 "external": [{"id": "AAAAA9999999999", 6 "personId": "AAAAA88888888888888", 7 "lastName": "SUZUKI", 8 "firstName": "TARO"}], 9 "type": "A", 10 "categories": [], 11 "title": null, 12 "location": null, 13 "memo": null}
回答2件
あなたの回答
tips
プレビュー