スポンサーリンク

pandasで日付を指定して行を抽出する

まずはdatetime型をindexにして、pandasのデータを作成します。

import pandas as pd

data = pd.read_csv('csv.txt',
				usecols=[0,1],
				names=('Date', 'Value'),
				index_col='Date',
				parse_dates=True)

例えば、2018年のデータを抽出するには、

print (data['2018'])

下記は、スライスを使って、2017-01-01 〜 2017-01-03 のデータを抽出しています。

print (data['2017-01-01' : '2017-01-03'])

秒単位でも日付を指定できます。
下記は、2017-01-01 01:01:03 〜 2017-01-03を指定しています。
print (data['2017-01-01 01:01:03' : '2017-01-03'])

スポンサーリンク

サンプルコード

例えば、下記のcsv.txtがあったとします。

$ cat csv.txt 
20170101010101,34,44,66
20170101010103,34,44,66
20170102010153,78,44,66
20180103010143,99,44,66
20180104010133,99,44,66
20180105010123,99,44,66

下記がサンプルコードになります。

$ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import pandas as pd

data = pd.read_csv('csv.txt',
				usecols=[0,1],
				names=('Date', 'Value'),
				index_col='Date',
				parse_dates=True)

print (data['2017-01-01' : '2017-01-03'])
print (data['2017-01-01 01:01:03' : '2017-01-03'])
print (data['2018'])

下記が実行結果になります。
$ ./sample.py 
                     Value
Date                      
2017-01-01 01:01:01     34
2017-01-01 01:01:03     34
2017-01-02 01:01:53     78
                     Value
Date                      
2017-01-01 01:01:03     34
2017-01-02 01:01:53     78
                     Value
Date                      
2018-01-03 01:01:43     99
2018-01-04 01:01:33     99
2018-01-05 01:01:23     99

スポンサーリンク