我有一個保存為 data.csv 的 CSV,看起來像這樣,有兩列:
Column1|Column2
Titleone|1.5
Title|two|2.5
Title3|3.6
CSV 中的第三行資料包含一個管道運算子,| 這導致了錯誤。我需要一種方法來讀取管道運算子作為第三行的 Column1 值的一部分。當我運行時,pd.read_csv("data.csv", sep = "|")我收到錯誤:ParserError: Error tokenizing data. C error: Expected 2 fields in line 3, saw 3
我無法使用,on_bad_lines='skip'因為我使用的是舊版本的 Pandas。這是我發現的一種解決方法,似乎是部分解決方案:
col_names = ["col1", "col2", "col3"]
df = pd.read_csv("data.csv", sep = "|", names = col_names)
uj5u.com熱心網友回復:
on_bad_linesdeprecates error_bad_lines,所以如果你使用的是舊版本pandas,你可以使用它:
pd.read_csv("data.csv", sep = "|", error_bad_lines = False)
如果您想保留壞行,您還可以使用warn_bad_lines, 從警告中提取壞行并在單個列中單獨閱讀它們:
import contextlib
with open('log.txt', 'w') as log:
with contextlib.redirect_stderr(log):
df = pd.read_csv('data.csv', sep = '|', error_bad_lines = False, warn_bad_lines = True)
with open('log.txt') as f:
f = f.readlines()
bad_lines = [int(x[0]) - 1 for x in f[0].split('line ')[1:]]
df_bad_lines = pd.read_csv('data.csv', skiprows = lambda x: x not in bad_lines, squeeze = True, header = None)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/410614.html
標籤:
下一篇:如何遍歷向量以生成新物件?
