Skip to content Skip to sidebar Skip to footer

How Do I Find All Rows With A Certain Date Using Pandas?

I have a simple Pandas DataFrame containing columns 'valid_time' and 'value'. The frequency of the sampling is roughly hourly, but irregular and with some large gaps. I want to be

Solution 1:

Pandas is absolutely terrific for things like this. I would recommend making your datetime field your index as can be seen here. If you give a little bit more information about the structure of your dataframe, I would be happy to include more detailed directions.

Then, you can easily grab all rows from a date using df['1-12-2014'] which would grab everything from Jan 12, 2014. You can edit that to get everything from January by using df[1-2014]. If you want to grab data from a range of dates and/or times, you can do something like:

df['1-2014':'2-2014']

Pandas is pretty powerful, especially for time-indexed data.


Solution 2:

Try this (is just like the continuation of your idea):

import pandas as pd
import numpy.random as rd
import datetime

times =  pd.date_range('2014/01/01','2014/01/6',freq='H')
values = rd.random_integers(0,10,times.size)

data = pd.DataFrame({'valid_time':times, 'values': values})
dt = datetime.datetime(2014,1,3)
rows = data['valid_time'].apply(
    lambda x: x.year == dt.year and x.month==dt.month and x.day== dt.day 
    )

print data[rows]

Post a Comment for "How Do I Find All Rows With A Certain Date Using Pandas?"