我有一个这样的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文件中的第一个空白行?
发布于 2018-10-19 05:39:48
您可以创建一个逐行读取文件的生成器。将结果传递给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)
发布于 2018-10-19 05:40:19
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)
https://stackoverflow.com/questions/52882771
复制相似问题