2017-05-30 40 views
1

我有一個大的CSV文件,有一個列數,以及一個Timestamp列。該文件按照時間戳的升序進行排序。如何在pandas的時間戳範圍內讀取CSV值?

我想將這些值讀入熊貓數據框,但只能在特定日期範圍內的特定時間戳範圍內讀取,例如從下午4:00到下午5:00。

什麼是最有效的方法來做到這一點?該文件是非常大的,我想避免完全通過它,因爲它是排序我希望它在達到上限時間戳時切斷,並且還希望避免手動拆分,,有沒有辦法做到這一點使用熊貓read_csv功能?

import pandas as pd 
df = pd.read_csv('csvfile', header='infer', ???) 

回答

0

有沒有內置的方式來使用read_csv()停在時間戳。 這裏找到文檔:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

有通過分解成塊來處理一個非常大的文件的方式:

http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking

一種策略是要找到最接近的值到時間戳會是argsort()。獲取最接近您的開始時間的項目的位置,並獲取最接近您的結束時間的項目的位置,然後獲取它們之間的值。我不會爲你編寫代碼,但我認爲這種方法應該可行。

檢查了這一點:How do I find the closest values in a Pandas series to an input number?

0

沒有辦法從read_csv()這樣做的權利,因爲它會嘗試將整個數據集加載到內存中。我建議你遍歷使用標準上下文經理csv.readline()方法輸入數據的行(一定要告訴csv the proper delimiters ..它可以做拆分爲您(參見例如在python DOC))

OR ...您可以將pd.read_csv()應用於每行(通過設置header=None來告訴您數據不包含標頭),或者只是咬住子彈並使用.split(',')。

無論使用哪種方法,都可以使用.to_datetime()解析相應列中的日期條目,然後使用.append()隨時將它添加到數據框中。

這可以全部在一個while循環中,用於測試當前加載日期何時超出範圍。

相關問題