Python - API から CSV へのデータフレーム

okwaves2024-01-25  9

私は Python を使用していて、API から CSV にデータをエクスポートしようとしています

import requests
import pandas as pd


url = "https://api.bexio.com/2.0/article"
#r = requests.get('https://api.bexio.com/2.0/article')
headers = {
'Accept': "application/json",
'Content-Type': "application/json",
'Authorization': "Bearer xxx}

それはうまくいきます。

  [{"id":34,"user_id":1,"article_type_id":1,"contact_id":null,"deliverer_code":"","deliverer_name":"","deliverer_description":"","intern_code":"TEXLINE-SOLD","intern_name":"TEXLINE Sold out","intern_description":"","purchase_price":"0.900000","sale_price":"2.450000","purchase_total":null,"sale_total":null,"currency_id":1,"tax_income_id":16,"tax_id":16,"tax_expense_id":22,"unit_id":1,"is_stock":true,"stock_id":null,"stock_place_id":null,"stock_nr":0,"stock_min_nr":0,"stock_reserved_nr":0,"stock_available_nr":0,"stock_picked_nr":0,"stock_disposed_nr":0,"stock_ordered_nr":0,"width":null,"height":null,"weight":null,"volume":null,"html_text":null,"remarks":"

ここでの問題は、このデータを CSV にエクスポートし、テーブルに適切にリストしたいことです。

で試してみました
from pandas.io.json import json_normalize
dic = response.json()
df = pandas.DataFrame(dic)
df.to_csv('detections.csv', index=False, sep="\t")

または pd としてパンダを使用します。しかし、それはうまくいきません。

これは役立つかもしれません - stackoverflow.com/questions/44802160/…

– ザック・クリアリー

2020 年 9 月 3 日 11:50



------------------------

JSON が文字列としてある場合は、read_json を試してください。

df = pd.read_json(json_string)

または、.json() を使用して API 応答を Python リストに変換し、そのリストから DataFrame を直接作成します。

r = requests.get('https://jsonplaceholder.typicode.com/posts')
df = pd.DataFrame(r.json())

応答がリスト ([{..}, .., {..}]) ではなく、単一のオブジェクト ({..}) の場合:

r = requests.get('https://jsonplaceholder.typicode.com/posts/1')
df = pd.DataFrame(r.json(), index=[0])

5

ご返信いただきありがとうございます。それを試してみたところ、次のような応答が返されました。 Traceback (most 最近の呼び出しは最後): File "final.py"、 の 15 行目df = pd.DataFrame(r.json())ファイル「/home/ariahi/.local/lib/python3.8/site-packages/pandas/core/frame.py」、行468、__init__ 内 mgr = init_dict(data, Index, columns, dtype=dtype) raise ValueError("すべてのスカラー値を使用する場合は、インデックスを渡す必要があります") ValueError: すべてのスカラー値を使用する場合は、インデックスを渡す必要があります

– シムサラブリ

2020 年 9 月 3 日 12:24

OK、つまり、応答として取得されるのはリストではなく単一のオブジェクトである可能性が高いです。 df = pd を試してください。DataFrame(r.json()、index=[0])

– パール

2020 年 9 月 3 日 12:28

ありがとう!エラーはありませんでしたが、同時に出力も得られませんでした。 ari@localhost:~/fastgeschaft$ python3 Final.py ari@localhost:~/fastgeschaft$

– シムサラブリ

2020 年 9 月 3 日 13:00

1

上で投稿したコードを使用する場合は、detections.csv ファイル (df.to_csv(... 行)) にデータフレームを書き込むことになり、コンソール出力は表示されません。そこ

– パール

2020 年 9 月 3 日 13:03

ありがとうございます!これがその仕組みです:)。最後の問題は、CSV へのエクスポートが混乱していることです。 Excel の 1 つの列には 20 個のエントリがあります。 「max_stock」が最大になるようにしたいです。 「Stockmax」として表示されます。ヘッダーとその下に数字「40」が表示されます。他のいくつかのエントリも同じです。どうすればこれを解決できますか?

– シムサラブリ

2020 年 9 月 6 日 14:30

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。