Programming/python
[์ค๋ฅ ํด๊ฒฐ] Error tokenizing data. C error: Expected * fields in line *, saw *
์ผํฐ๋
2023. 5. 9. 16:30
- ์ค๋ฅ ํ์
Pandas read_csv๋ฅผ ํ ๋ ๋ฐ์
(Error tokenizing data. C error: Expected 4 fields in line 2, saw 7)
- ์ค๋ฅ ์์ธ
๋ฐ์ดํฐ ์ค๊ฐ์ ์ฒซ ํ๊ณผ ๋ค๋ฅธ ๊ธธ์ด๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐ์
- ํด๊ฒฐ ๋ฐฉ๋ฒ
1) ๋ฐ์ดํฐ ์์ ํ๊ธฐ : ๋ณดํต ๋ฐ์ดํฐ ์ค๋ฅ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋, ๋ค๋ฅธ ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ ํ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ค.
2) ๋ฌธ์ ๊ฐ ๋๋ ํ์ ๊ฑด๋๋ฐ๊ธฐ : error_bad_lines ์ต์
์ False๋ก ๋ฐ๊พธ๋ฉด, ๋ฌธ์ ๊ฐ ๋๋ ํ์ ๊ฑด๋๋ด๋ค.
pd.read_csv(path, error_bad_lines=False)
3) ํ์ผ ์ ์ฒด ์ค์บ ํ, ๋ค์ Pandas ๋ก ์ฝ์ด์ฃผ๊ธฐ : ํน์ Row๋ฅผ ๊ฑด๋๋ฐ๋ฉด ์๋๋, ์ฆ ์ฒซ๋ฒ์งธ ํ์ด ์๋ ๋ฐ์ดํฐ๋ผ๋ ์ด๋ ค์ผํ๋ ๊ฒฝ์ฐ ํ์ฉํ๋ค.
# ํ์ผ ์ ์ฒด ์ค์บํ๋ฉด์ Row๋ณ Column ๊ฐ์ ์ธ๊ธฐ
delm = ','
with open("sample.csv", "r") as f:
count_columns = [len(l.split(delm)) for l in f.readlines()]
# ๊ฐ์ฅ ํฐ Column ๊ฐ์ ๊ธฐ์ค Columns๋ช
๋ฆฌ์คํธ ๋ง๋ค์ด์ฃผ๊ธฐ
columns = [i for i in range(0, max(count_columns)]
df = pd.read_csv("sample.csv", names=columns, delimiter=',')