🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

1245閲覧

[python3] pandas dataframeをopen(csv_file) の部分と同様に扱えるようにしたい

ichinohetomo

総合スコア27

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/11/27 04:00

既存の処理では、ローカルに保存されているcsvファイルをopenで開いて、後続の処理で扱っています。

with open(src_file_path, "rb") as csvfile:

後続の処理としては、下記のようにreadしたり、色々します。

read_csv = csvfile.read().replace(b'\rn', b'\n') f = io.StringIO(read_csv.decode(encoding))

既存の処理では、ローカルファイルのcsvを読み込んでいましたが、これをs3に保存されているcsvを下記のようにs3から読み込んでdfとして扱うようにしました。

with s3.open(BUCKET_NAME + 'filename.csv', 'rb') as f: df = pd.read_csv(f)

なので、今までcsvのファイルを読み込んでいたところを下記のように変えたいのですがエラーが出ます

with df as csvfile:

まず、dfにはreadの関数はありません。

open(src_file_path, "rb") as csvfile は printすると <class '_io.BufferedReader'> と出力されるので、
同じような形式で扱いたいときに、下記のようにしてもうまくいきません。

buffer = io.TextIOBase() df.to_csv(buffer) with open(buffer) as csv_file:

前提として、後続の処理でcsv_fileとして扱う部分に関しては、他の処理の兼ね合いもあるため変更できません。
dfをopen(csv)とした時と同じように扱えるようにしたいです。
ローカルに一度csvファイルとして保存、という形も取れません。

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

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

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

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

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

TakaiY

2020/11/27 05:02

'with open(src_file_path, "rb") as csvfile:' を単に、'with s3.open(BUCKET_NAME + 'filename.csv', 'rb') as f:'で置き替えるのではだめなのでしょうか?
guest

回答1

0

プログラムの全体がわからないので、求められているものがよくわかりませんが、以下の例を参考に考えてみてください。

python

1>>> import io 2>>> import numpy as np 3>>> import pandas 4>>> 5>>> df=pd.DataFrame( np.arange(12).reshape(3,4),columns=list('abcd')) 6>>> 7>>> with io.StringIO(df.to_csv()) as csvfile: 8... print(csvfile.readline()) 9... print(csvfile.readline()) 10... 11,a,b,c,d 12 130,0,1,2,3

投稿2020/11/29 06:10

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問