Tokes1
@Tokes1

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

python pandas 複数CSVの読み込みでUnicodeDecodeErrorの解決方法

解決したいこと

python pandas 複数CSVの読み込みでUnicodeDecodeErrorの解消

pythonで複数のcsvを繰り返し読み込んで1つのデータにしたいのですが
下記コードの中の(pd.read_csv(file))の箇所で
UnicodeDecodeErrorが発生します
解決方法をご教授いただけますと幸いです。

発生している問題・エラー

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

image.png

該当ソースコード

python

import pandas as pd
import glob
csv_files = glob.glob(r'C:\Users\test*.csv')

list = []

for file in csv_files:
list.append(pd.read_csv(file))

df = pd.concat(list)
df.to_csv('test_total.csv',index=False)


試したこと

①(pd.read_csv(file),encoding = 'Shift-jis')など
 よく使われる文字コード指定試しました
②読み込みたいCSVの保存形式はCSV(コンマ区切り)(*.csv)でした
③メモ帳などで確認した際の右下はANSIになっていました
④pd.read_csv(r'C:\Users\test*.csv',encoding = 'ANSI')では
 1つごとには読み込めました
⑤(pd.read_csv(file),encoding = 'ANSI')ではエラーになりました

以上よろしくお願いいたします。

0

4Answer

for file in csv_files:
   list.append(pd.read_csv(file))

list.appendではデータフレームが横一列のリストになるのでは?

pandasのデータフレームに直接読み込んで、データフレームを追記する方が良いと思います。

df = pd.DataFrame()
for file in csv_files:
   df += pd.read_csv(file)

のような記述ができた? うろ覚えですみません。サイトのとおりで。。。

1Like

Comments

  1. @Tokes1

    Questioner

    回答いただきありがとうございます
    UFT-8形式ではできたのですが
    やはりUnicodeerrorになってしまいました

    サイトよく読み込んで色々試してみます
    ありがとうございました

  2. @Tokes1

    Questioner

    HalHaradaさまのご回答の
    DataFrameで追記する方法に変えて
    試したところやりたいことができました
    ありがとうございました!

  3. 解決おめでとうございます。

回答いただきありがとうございます
csvははまりやすいことよくわかりました

csv.open使ったことがないので
サイトよく読み込んで組み込んでみようと思います
回答いただきありがとうございました

1Like

一応確認ですけど④と⑤でencoding引数の位置が違いますけどそれは大丈夫ですか?

0Like

Your answer might help someone💌