簡體   English   中英

防止熊貓將每個塊的格式化標頭重寫為csv

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM