[英]Python Pandas - Write New CSV Header Row without Reading/ReWriting Entire File
[英]Prevent pandas from rewriting formatted header to csv for every chunk
我有一个脏的csv,上面有一个丑陋的标头,已格式化并存储在列表中。
我想逐块读取此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行重复一次。 如何防止这种情况发生?
由于您只想编写一次标头,因此请使用布尔值查看您是否在第一个块上。
例如:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.