2017-05-30 16 views
1

多くの列を持ち、Timestamp列の大きなCSVファイルがあります。ファイルは、タイムスタンプの昇順でソートされます。パンダのタイムスタンプ範囲でCSV値を読み取る方法は?

これらの値を特定の日付の午後4時から午後5時までの特定のタイムスタンプ範囲内でのみ、パンダのデータフレームに読みたいと思います。

これを行う最も効率的な方法は何でしょうか?ファイルが非常に大きく、ソートされているので、完全に通過しないようにしたい。上位のタイムスタンプに達したときに切り捨てて、手動での分割を避けたい。,でこれを行う方法があるパンダを使用してread_csv機能?

答えて

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()からこの権利を行う方法がありません。私は

(..itはあなたのための分割を行うことができます csv the proper delimitersを教えてください(Pythonのドキュメントの例を参照))あなたは csv.readline()方法のための標準的なコンテキストマネージャを使用して、入力データの行を反復処理することをお勧めしたいOR ... pd.read_csv()を各行に適用することができます(データには、 header=Noneを設定してヘッダーが含まれていないことを伝えます)。または、箇条書きを噛んで、.split( '、')を使用します。

いずれにしても、.to_datetime()を使用して該当する列の日付エントリを解析し、.append()を使用して、データフレームに追加することができます。

これは、現在読み込まれている日付があなたの範囲を超えているかどうかをテストするwhileループにあります。

関連する問題