最近在用pandas处理csv文件时,发现一个头大的问题:系统导出的csv文件表头之前有些不需要的行,这些行在每个csv文件中的数目都不一样,如下图:
csv文件开头的若干行不需要
直接用pd.read_csv()去读取会报错,如果每个文件都手动指定跳过的行,又嫌太罗嗦,我需要一种自动化的方式来跳过这些不需要的行。
爬网半天,找到一种解决办法。
我直接照抄,并进行了简单改造,以适应我的需要:
#跳过每个csv文件开头不需要的行的函数
def skip_to(fle,**kwargs):
if os.stat(fle).st_size == 0:
raise ValueError("File is empty")
with open(fle) as f:
pos = 0
cur_line = f.readline()
while not cur_line.find('日期')>=0:
pos = f.tell()
cur_line = f.readline()
f.seek(pos)
return pd.read_csv(f, **kwargs)
然后在自己的函数中调用这个函数,就解决了pandas读取csv文件时,跳过不定行数的问题:
def gen_data(pattern,groupby):
f_path=[x for x in files if re.search(pattern,x)!=None][0]
df=skip_to(f_path,delimiter=',')
df=df.groupby(groupby).sum()
df=df[['展现','点击']]
……
网友评论