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

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

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

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

Q&A

解決済

2回答

9420閲覧

複数のcsvファイルを一つにまとめる

mo_chi_o

総合スコア18

Python

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

0グッド

1クリップ

投稿2018/11/20 04:28

同じフォルダ内にある複数のcsvファイルをTOTAL.csvとして一つのファイルにまとめたいのですが以下のコードでエラーが出てしまいます。

コード import json,csv import pandas as pd import glob csv_files = glob.glob('*.csv') list = [] for i in csv_files: list.append(pd.read_csv(i)) df = pd.concat(list) df.to_csv("TOTAL.csv") --------------------------------------------------------------------------- EmptyDataError Traceback (most recent call last) <ipython-input-13-1535ff58b21a> in <module>() 8 9 for i in csv_files: ---> 10 list.append(pd.read_csv(i)) 11 df = pd.concat(list) 12 ~\Miniconda3\envs\cs2017_data\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision) 653 skip_blank_lines=skip_blank_lines) 654 --> 655 return _read(filepath_or_buffer, kwds) 656 657 parser_f.__name__ = name ~\Miniconda3\envs\cs2017_data\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds) 403 404 # Create the parser. --> 405 parser = TextFileReader(filepath_or_buffer, **kwds) 406 407 if chunksize or iterator: ~\Miniconda3\envs\cs2017_data\lib\site-packages\pandas\io\parsers.py in __init__(self, f, engine, **kwds) 762 self.options['has_index_names'] = kwds['has_index_names'] 763 --> 764 self._make_engine(self.engine) 765 766 def close(self): ~\Miniconda3\envs\cs2017_data\lib\site-packages\pandas\io\parsers.py in _make_engine(self, engine) 983 def _make_engine(self, engine='c'): 984 if engine == 'c': --> 985 self._engine = CParserWrapper(self.f, **self.options) 986 else: 987 if engine == 'python': ~\Miniconda3\envs\cs2017_data\lib\site-packages\pandas\io\parsers.py in __init__(self, src, **kwds) 1603 kwds['allow_leading_cols'] = self.index_col is not False 1604 -> 1605 self._reader = parsers.TextReader(src, **kwds) 1606 1607 # XXX pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.__cinit__ (pandas\_libs\parsers.c:6260)() EmptyDataError: No columns to parse from file 解決方法を教えていただけると幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

EmptyDataError: No columns to parse from file
と表記があるとおり、何も書かれていないファイルがあるのではないでしょうか

とりあえず、例外を捕捉する処理を入れて

Python

1import json,csv 2import pandas as pd 3import pandas.io.common 4import glob 5 6csv_files = glob.glob('*.csv') 7lst = [] 8 9for i in csv_files: 10 try: 11 d = pd.read_csv(i) 12 lst.append(d) 13 except pandas.io.common.EmptyDataError: 14 print("ERROR: {} is empty".format(i)) 15 16df = pd.concat(lst) 17df.to_csv("TOTAL.csv")

のようにしてみたらいかがでしょうか

投稿2018/11/20 04:46

magichan

総合スコア15898

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

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

mo_chi_o

2018/11/20 04:51

ありがとうございます。 空のcsvファイルを消したら UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 0: invalid start byte のようなエラーが出でしまったのですがこれは何が原因なのでしょうか。
magichan

2018/11/20 05:07

簡単にいうと、「文字コードがutf8でデコードできないぞ」です。 CSVデータに日本語が含まれていて、UTF8以外のエンコード方式だったりしませんか?
magichan

2018/11/20 05:12

例えばCSVファイルが Shift-JIS で書かれているのであれば d = pd.read_csv(i, encoding="shift-jis") のようにする必要があります
mo_chi_o

2018/11/22 02:17

どうやらcsvファイルに日本語が混ざっていたみたいで、そのファイルを消去したら実行できました。ありがとうございます。
guest

0

コードの妥当性はひとまず措いて

EmptyDataError: No columns to parse from file

中身のないCSVファイルが含まれていると再現します。除外する必要があります。

投稿2018/11/20 04:46

can110

総合スコア38266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問