我有一个像这样的data.csv文件
Col1,Col2,Col3,Col4,Col5
10,12,14,15,16
18,20,22,24,26
28,30,32,34,36
38,40,42,44,46
48,50,52,54,56
Col6,Col7
11,12
13,14
...
现在,我只想读取Col1到Col5列的数据,不需要Col6和Col7。
我尝试使用
读取此文件df = pd.read_csv('data.csv',header=0)
然后抛出错误提示
UnicodeDecodeError : 'utf-8' codec cant decode byte 0xb2 in position 3: invalid start byte
然后,我尝试了
df = pd.read_csv('data.csv',header=0,error_bad_lines=True)
但是,这也没有得到期望的结果。我们如何只能读取到csv文件中的第一个空白行?
答案 0 :(得分:2)
您可以创建一个生成器,以逐行读取文件。结果传递到pandas
:
import pandas as pd
import io
def file_reader(filename):
with open(filename) as f:
for line in f:
if line and line != '\n':
yield line
else:
break
data = io.StringIO(''.join(file_reader('data.csv')))
df = pd.read_csv(data)
答案 1 :(得分:1)
Pandas没有选项可以在某个条件下停止,但是它确实具有在n行之后停止的条件。因此,您可以先读取文件,计算行数直到空白,然后使用
加载大熊猫pd.read_csv('file.csv',nrows= count )
大致如下:
count = 0
with open(filename) as f:
for line in f:
if line and line != '\n':
count += 1
else:
break
pd.read_csv(filename,nrows=count)