Sreevathsabr
Sreevathsabr

Reputation: 689

I want to slice the data in pandas based on date time

I am trying to slice the data based on the date.

If I know what date , I know how to do the slicing. In my case I will NOT the date stamp. So based on date , I want to do slicing to do my further operation on the data

enter image description here

Please refer to the example for data. Here date column can have a date of any day. I want slice the data.

First slice will be for date : 20211201 Second slice will be for date : 20211202

I am able to covert column into date time format as below

df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
df = df.set_index('date')

please help over this

Upvotes: 0

Views: 723

Answers (2)

eshirvana
eshirvana

Reputation: 24568

here is what you need to do :

df = df[df['time'].between('9:10','9:20')].groupby('date')['Open'].max()

Upvotes: 1

Cedric Zoppolo
Cedric Zoppolo

Reputation: 4743

Input data

The data you used is:

import pandas as pd
df = pd.DataFrame({"date":[20211201,20211201,20211201,20211201,20211201,20211202,20211202,20211202,20211202],\
                    "time":["9:08","9:16","9:17","9:18","9:19","13:08","13:09","13:10","13:11"],\
                    "Open":[17104.4,17105.05,171587.75,17175.2,17168.6,17311.95,17316.5,17322.55,17325.9]})

df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
df = df.set_index('date')

Solution

You can slice the DataFrame as follows:

import datetime
df1 = df[df.index==datetime.datetime(2021,12,1)]
df2 = df[df.index==datetime.datetime(2021,12,2)]

Output

Then the outputs you would obtain are:

>>> df1
            time       Open
date                       
2021-12-01  9:08   17104.40
2021-12-01  9:16   17105.05
2021-12-01  9:17  171587.75
2021-12-01  9:18   17175.20
2021-12-01  9:19   17168.60
>>> df2
             time      Open
date                       
2021-12-02  13:08  17311.95
2021-12-02  13:09  17316.50
2021-12-02  13:10  17322.55
2021-12-02  13:11  17325.90

Upvotes: 0

Related Questions