我有一个带有丑陋标题的脏csv,我已将其格式化并存储在列表中。
我想通过chunk读取这个csv块,对数据执行一些正则表达式,然后写入新的csv。
我正在使用此功能
def format_data(data_location, formatted_header):
df = pd.read_csv(data_location, sep=',', skiprows=1,
header=0, names=formatted_header, chunksize=10000)
for chunk in df:
chunk = chunk.replace('(?!(([^"]*"){2})*[^"]*$),', '', regex=True)
chunk.to_csv('formatted_data.csv', mode='a', index=False)
据我了解我在这里做的事情:
pd.read_csv(data_location, sep=',', skiprows=1,
header=0, names=formatted_header, chunksize=10000)
我正在从它的位置读取csv,跳过第一个丑陋的标题行并替换为我的formatted_header。
我的问题是,对于写入新CSV的每个新块,我看到每10,000行后重复格式化的标题行。我该如何防止这种情况发生?
答案 0 :(得分:3)
由于您只想写一次标题,请使用布尔值来查看您是否在第一个块上。
例如:
write_header = True
for chunk in df:
chunk = chunk.replace('(?!(([^"]*"){2})*[^"]*$),', '', regex=True)
chunk.to_csv('formatted_data.csv', mode='a', index=False, header=write_header)
write_header = False