web-dev-qa-db-ja.com

Pandas DataFrame.to_csvでIOErrorが発生:そのようなファイルまたはディレクトリはありません

こんにちは:PandasDataFrame.to_csvメソッドを使用してdataframecsvファイルに保存しようとしています。

filename = './dir/name.csv'

df.to_csv(filename)

しかし、私はエラーが発生しています:

IOError: [Errno 2] No such file or directory: './dir/name.csv'

to_csvメソッドは、ファイルが存在しない場合にファイルを作成できませんか?これが私がやろうとしていることです。

20
LoLa

to_csvは、あなたが言ったようにファイルが存在しない場合は作成しますが、存在しないディレクトリは作成しません。ファイルを保存しようとしているサブディレクトリが最初に作成されていることを確認してください。

私はよく仕事で次のようなことをします。

import os

outname = 'name.csv'

outdir = './dir'
if not os.path.exists(outdir):
    os.mkdir(outdir)

fullname = os.path.join(outdir, outname)    

df.to_csv(fullname)

これを頻繁に行う必要がある場合、これは簡単に関数にまとめることができます。

29
qRTPCR

優れた標準ライブラリpathlibモジュールを使用してこれを行う別の方法を次に示します。これにより、一般的に見やすくなります。

他で説明したように、to_csvfileを作成しますが、存在しない場合はwont createファイルへのパスに存在しないディレクトリがあるため、まずこれらが存在することを確認する必要があります。

from pathlib import Path

output_file = 'my_file.csv'
output_dir = Path('long_path/to/my_dir')

output_dir.mkdir(parents=True, exist_ok=True)

df.to_csv(output_dir / output_file)  # can join path elements with / operator

設定parents=Trueは、必要な親ディレクトリも作成し、exist_ok=Trueは、ディレクトリが既に存在する場合、エラーを発生させないことを意味します。したがって、個別に明示的に確認する必要はありません。

11
Tim