大規模なデータをフィルタリングのための可能な利用パラメータusecols
のみいくつかの列(複数可)とフィルタリングbetween
のためである場合:
paivat = pd.read_csv('roadData.csv',
sep = ';',
encoding = "latin1",
error_bad_lines=False,
usecols=['dateRegistered'],
parse_dates=['dateRegistered'])
#if parse_dates doesnt return datetimes
#paivat = pd.to_datetime(paivat.dateRegistered, errors='coerce')
#for compare need datetime
thisDate = datetime.datetime.now()
#get days
d = (paivat.dateRegistered - thisDate).dt.days
#filtering
fiveYears = paivat[d.between(0, 1825)]
または:
fiveYears = paivat[(d >= 0) & (d <= 1825)]
必要な場合:
print (d.between(0, 1825).sum())
または:
print (((d >= 0) & (d <= 1825)).sum())
サンプル:あなたのCSVを読み込むとき
import pandas as pd
import numpy as np
from pandas.compat import StringIO
import datetime
temp=u"""dateRegistered;col
2017-11-25;0
2017-12-26;1
2017-12-27;2
2017-11-28;3
2017-11-29;4
2017-11-30;5
2017-11-01;7
2017-11-02;8
2017-11-03;9"""
#after testing replace 'StringIO(temp)' to 'roadData.csv'
paivat = pd.read_csv(StringIO(temp),
sep = ';',
encoding = "latin1",
error_bad_lines=False,
usecols=['dateRegistered'],
parse_dates=['dateRegistered'])
thisDate = datetime.datetime.now()
d = (paivat.dateRegistered - thisDate).dt.days
print (d)
0 14
1 45
2 46
3 17
4 18
5 19
6 -10
7 -9
8 -8
Name: dateRegistered, dtype: int64
print (d.between(0, 15).sum())
1
また、あなたはdatetime型に変換することができます。 'read_csv'を呼び出すときは' parse_dates = 'ensirekisterointipvm''を使います。 –
注: 'days'の使用は、timedeltaオブジェクトには適切であり、datetimeオブジェクトには適切ではありません。 –