Rachele Franceschini
Rachele Franceschini

Reputation: 127

extract data in specific interval

I have one table with two columns: date (01-01-2010 to 31-08-2021), value (mm) I would like to get only data during 2020. There is a function or similar to get some only data in specific period?

For example to create one pivot.

Upvotes: 1

Views: 1254

Answers (3)

I'mahdi
I'mahdi

Reputation: 24049

try this:


df = pd.DataFrame(
    {'date':['27-02-2010','31-1-2020','31-1-2021','02-1-2020','13-2-2020',
             '07-2-2019','30-4-2018','04-8-2020','06-4-2013','21-6-2020'],
     'value':['foo','bar','lorem','ipsum','alpha','omega','big','small','salt','pepper']})

df[pd.to_datetime(df['date']).dt.year == 2020]

Output:

    date    value
1   31-1-2020   bar
3   02-1-2020   ipsum
4   13-2-2020   alpha
7   04-8-2020   small
9   21-6-2020   pepper

Or for serching with any range you can use this:

df['date'] = pd.to_datetime(df['date'])
df[(df['date']>pd.Timestamp(2020,1,1)) & (df['date']<pd.Timestamp(2020,12,31))]

Upvotes: 1

Arne
Arne

Reputation: 10545

Pandas has extensive time series features that you may want to use, but for a simpler approach, you could define the date column as the index and then slice the data (assuming the table is already sorted by date):

import pandas as pd

df = pd.DataFrame({'date': ['31-12-2019', '01-01-2020', '01-07-2020', 
                            '31-12-2020', '01-01-2021'],
                   'value': [1, 2, 3, 4, 5]})
df.index = df.date

df.loc['01-01-2020':'31-12-2020']
            date        value
date        
01-01-2020  01-01-2020  2
01-07-2020  01-07-2020  3
31-12-2020  31-12-2020  4

Upvotes: 0

Justin.Arnold
Justin.Arnold

Reputation: 144

Here is an example of a idea on how you can return the values from a dataset based on the year using string slicing! If this doesn't pertain to your situation I would need you to edit your post with a specific example of code!

import pandas as pd

df = pd.DataFrame(
    {'date':['27-02-2010','31-1-2020','31-1-2021','02-1-2020','13-2-2020','07-2-2019','30-4-2018','04-8-2020','06-4-2013','21-6-2020'],'value':['foo','bar','lorem','ipsum','alpha','omega','big','small','salt','pepper']})
for row in df.iterrows():
    if row[1]['date'][-4::1] == '2020':
        print (row[1]['value'])

this will only return the values from the dataframe that come from dates with a year of 2020

Upvotes: 0

Related Questions