前提・実現したいこと
業務自動化のために、webdriverでダウンロードしたcsvファイルを、
pandasで開きたいと思っています。
windows10でjupyter labを使用しています。
直前に
python3
1import glob 2import os 3list_of_files = glob.glob('C:\Users\●●\Downloads\*') # * means all if need specific format then *.csv 4latest_file = max(list_of_files, key=os.path.getctime) 5print (latest_file)
で、ダウンロードした最新パスファイルのを取得した後、
下記を実行したところ
python3
1import pandas as pd 2import codecs 3 4with codecs.open(latest_file, "r", "Shift-JIS", "ignore") as file: 5 df1 = pd.read_table(file, delimiter=",") 6 print(df1)
以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.read() pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory() pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_rows() pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows() pandas\_libs\parsers.pyx in pandas._libs.parsers.raise_parser_error() ParserError: Error tokenizing data. C error: Expected 19 fields in line 23, saw 20
試したこと
色々検索してシンプルに
python3
1df1 = pd.read_csv(latest_file, encoding="shift-jis") 2df1
で、実行すると
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.read() pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory() pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_rows() pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows() pandas\_libs\parsers.pyx in pandas._libs.parsers.raise_parser_error() ParserError: Error tokenizing data. C error: Expected 19 fields in line 23, saw 20
と同様のエラーが出てしまいます。
お助け頂けますと助かります。。。
そのcsvファイルはテキストエディタでは問題なく開けますか?
ありがとうございます。
はい、テキストエディタでもexcelでもSpreadsheetでも問題無く開けるんですよね。。。
列によっては欠損値もあるのですが。
pythonの中でpandasを使わずに普通に開いてprintすることはできますか?
ありがとうございます。
############
import csv
import pprint
with open(latest_file) as f:
print(f.read())
############
で実行したところ、「,」区切りのcsvが問題無く表示されました。
type(f)
を実行したところ、
_io.TextIOWrapper
と出力されました。
ナニコレ・・・(^_^;)
自分で適当なcsvを作って、
1,2,3,4
5,6,7,8
みたいな。
読み込むことはできますか?
度々すいません。
テキストエディタで
1,2,3,4,5
6,7,8,9
というファイルを作り、ダウンロードフォルダに入れて
import pandas as pd
import codecs
df1 = pd.read_csv(latest_file)
df1
を実行したところ問題なく
1,2,3,4,5
0 6,7,8,9,
という内容で出力されました。
あれれ?
今、
# ダウンロードしたcsvの読み込み
import pandas as pd
import codecs
df1 = pd.read_csv(latest_file,encoding='cp932')
df1
で実行してみたところ、pandasで開く事が出来たのですが、
jupyter labの最初から動かしてみたところ今までと同樣に
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.read()
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory()
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_rows()
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows()
pandas\_libs\parsers.pyx in pandas._libs.parsers.raise_parser_error()
ParserError: Error tokenizing data. C error: Expected 19 fields in line 41, saw 20
というエラーが・・・。そんなぁ・・・。
むむむ
import pandas as pd
import codecs
df1 = pd.read_table(latest_file,encoding='cp932')
df1
で実行してみると読み込めました。
しかしながら、
df1.shape
で調べてみると
(47,1)
47行1列という謎のDataFrameが出来ました。。。
ここからsplitで分割出来る・・・?!
回答1件
あなたの回答
tips
プレビュー