質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6749閲覧

ネストがあるjsonをcsvに変換したい

furuit

総合スコア19

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/14 03:37

やりたいこと

jsonを以下のようなcsvファイルに変換したいです
元のJSONファイル↓

json

1[ 2 { 3 "copyright": "© Google", 4 "date": "2019-03", 5 "location": { 6 "lat": 36.09595147683597, 7 "lng": 140.0958098076157 8 }, 9 "pano_id": "nxjc_m1rCt35lRgK0JMyNA", 10 "status": "OK", 11 "_file": "gsv_0.jpg" 12 }, 13 { 14 "copyright": "© Google", 15 "date": "2019-06", 16 "location": { 17 "lat": 36.09572105125777, 18 "lng": 140.0960190499983 19 }, 20 "pano_id": "3HSZ4wDm2EcGms3emO1m7g", 21 "status": "OK", 22 "_file": "gsv_1.jpg" 23 },

csv

1,copyright,date,lat,lng,pano_id,status,_file 20,© Google,2019-03-01,36.09595147683597,140.0958098076157 3,nxjc_m1rCt35lRgK0JMyNA,OK,gsv_0.jpg 41,© Google,2019-06--01,36.09572105125777,140.0960190499983,3HSZ4wDm2EcGms3emO1m7g,OK,gsv_1.jpg

現状の問題点

プログラミングは人のコードを少し変えて動かせる程度の学生です...
一部("location")ネストしているjsonをフラットにしてcsvに変換したいです

実行コード

python

1import pandas as pd 2import json 3import os 4from pandas.io.json import json_normalize 5 6file = "" 7 8df = pd.read_json(file) 9df_json.to_csv("out.csv", encoding='utf-8')

出力されたCSV

csv

1,copyright,date,location,pano_id,status,_file 20,© Google,2019-03-01,"{'lat': 36.09595147683597, 'lng': 140.0958098076157}",nxjc_m1rCt35lRgK0JMyNA,OK,gsv_0.jpg 31,© Google,2019-06-01,"{'lat': 36.09572105125777, 'lng': 140.0960190499983}",3HSZ4wDm2EcGms3emO1m7g,OK,gsv_1.jpg

試したこと

** json_normalize(df["location"])**として展開しましたが,そうすると今度は

python

1df = pd.read_json(file) 2df_json = json_normalize(df["location"]) 3df_json.to_csv("out.csv", encoding='utf-8') 4コード

csv

1,lat,lng 20,36.09595147683597,140.0958098076157 31,36.09572105125777,140.0960190499983

このように出力され,他の取得したいキーが変換できませんでした
元のjsonファイルにある他のキーもcsvに変換したいです
わかる方いれば教えていただけると幸いです,,

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下を行ったあとに、ファイルに保存してください。

python

1>>> df['lat'] = df['location'].apply(lambda x: x['lat']) 2>>> df['lng'] = df['location'].apply(lambda x: x['lng']) 3>>> df.drop('location', axis=1, inplace=True) 4>>> print(df) 5 copyright date pano_id status _file lat lng 60 c Google 2019-03-01 nxjc_m1rCt35lRgK0JMyNA OK gsv_0.jpg 36.095951 140.095810 71 c Google 2019-06-01 3HSZ4wDm2EcGms3emO1m7g OK gsv_1.jpg 36.095721 140.096019

参考
pandasで要素、行、列に関数を適用するmap, applymap, apply
Pythonのlambda(ラムダ式、無名関数)の使い方

投稿2021/12/14 04:03

編集2021/12/14 04:06
ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

furuit

2021/12/14 04:08

できましたああ!ありがとうございます????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問