我在我的csv文件的開頭有一些垃圾,它阻止我按名稱選擇我的數據框的第一列。讓pandas.read_csv()在csv文件的開頭忽略垃圾?
實施例:
In[1]: df = pd.read_csv('file:inputdata.csv', usecols=[0], nrows=1)
In[2]: df
Out[2]:
TAB
0 10-LV_Non
In[3]: df['TAB']
Out[3]: <snip> KeyError: 'TAB'
我發現垃圾通過讀取文件具有開放():
In[4]: with open('inputdata.csv', 'rb') as f:
print(f.read(7))
Out[4]: b'\xef\xbb\xbfTAB,'
編輯:'\xef\xbb\xbf'
是三個字節垃圾。 'TAB'
是第一列的名稱。
是否有一種方法可以使pandas.read_csv()
在csv文件開始時忽略這樣的垃圾箱(如果存在)?
注意csv文件是從專有系統導出的,所以我無法控制它們的格式。
更新:這是我的解決方案的基礎上,邁克穆勒的回答是:
with open('inputdata.csv', 'r') as f:
# Skip past any bytes that aren't text
while re.match('[a-zA-Z0-9_]', f.read(1)) is None:
pass
# Seek back one byte
f.seek(f.tell()-1)
# Read the file
df = pd.read_csv(f, usecols=['TAB'])
skiprows是要走的路 – latorrefabian