簡體   English   中英

pandas read_csv-從某一行開始跳過每隔一行

[英]pandas read_csv - Skipping every other row starting from a certain row

我有一個巨大的.csv文件(超過一百萬行),我正在嘗試使用pandas read_csv函數進行解析。 該文件非常大,因為它是來自具有很高采樣率的傳感器的測量數據,我想從中獲取降采樣的片段。 我嘗試用lambda函數以及skiprowsnrows參數實現它。 我的代碼當前所做的是,它一次又一次地讀取同一段。

segment_amt = 20 # How many segments we want from a individual measurement file
segment_length = 5 # Segment length in seconds
segment_length_idx = fs * segment_length # Segmenth length in indices
segment_skip_length = 10 # How many seconds between segments
segment_skip_idx = fs * segment_skip_length # The amount of indices to skip between each segment
downsampling = 2 # Factor of downsampling

idx = start_idx
for i in range(segment_amt):

    cond = lambda x: (x+idx) % downsampling != 0
    data = pd.read_csv(filename, skiprows=cond, nrows = segment_length_idx/downsampling,
           usecols=[z_component_idx],names=["z"],engine='python')
    M1_df = M1_df.append(data.T)
    idx += segment_skip_idx

這導致像這樣 我認為該行為是由於lambda函數引起的,但我不知道如何解決它,因此它每次都基於idx更改起始行(這是我目前認為的做法)。

您的cond lambda錯誤。 如果x < idxx % downsampling != 0 x < idx跳過行。 只是這樣寫:

cond = x < idx or x % downsampling != 0

但是,您還應該考慮傳遞header = False以避免將每個段的第一行作為標題處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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