2

最近、データフレームを取得して、Excel ファイルに出力する準備をする必要がありました。ただし、ローカル システムに保存するのではなく、準備したデータを、URI に基づいてクラウドに保存する別の関数に渡します。多数の ExcelWriter の例を検索した後、探しているものが見つかりませんでした。

目標は、データフレームを取得することです。たとえば、次のようになります。

df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6})

そして、変数にバイトとして一時的に保存します。たとえば、次のようになります。

processed_data = <bytes representing the excel output>

私が思いついた解決策は回答に記載されており、他の人の助けになることを願っています。他の方の解決策も見てみたいです!

更新 #2 - ユースケースの例

私の場合、URI を使用してさまざまなクラウド宛先を指定できるようにする io モジュールを作成しました。たとえば、gs:// で始まる「パス」は Google ストレージに送信されます (gsutils のような構文を使用)。最初のステップとしてデータを処理し、その処理済みデータを「保存」関数に渡します。この関数自体がフィルター処理を行い、正しいパスを決定します。

df.to_csv()は実際にはパスなしで動作し、自動的に文字列を返します (少なくとも最近のバージョンでは)。

4

1 に答える 1

2

一般的な例と同じように機能しますが、ExcelWriter でファイルを指定する代わりに、標準ライブラリの BytesIO を使用して変数 ( processed_data)に格納します。

from io import BytesIO

import pandas as pd


df = pd.DataFrame({
    "a": [1, 2, 3], 
    "b": [4, 5, 6]
})

output = BytesIO()
writer = pd.ExcelWriter(output)
df.to_excel(writer)  # plus any **kwargs
writer.save()
processed_data = output.getvalue()
于 2018-06-01T20:49:16.133 に答える