Python Pandas Group by date using datetime data

Python Pandas Group by date using datetime data

You can use groupby by dates of column Date_Time by dt.date:

df = df.groupby([df[Date_Time].dt.date]).mean()

Sample:

df = pd.DataFrame({Date_Time: pd.date_range(10/1/2001 10:00:00, periods=3, freq=10H),
                   B:[4,5,6]})

print (df)
   B           Date_Time
0  4 2001-10-01 10:00:00
1  5 2001-10-01 20:00:00
2  6 2001-10-02 06:00:00

print (df[Date_Time].dt.date)
0    2001-10-01
1    2001-10-01
2    2001-10-02
Name: Date_Time, dtype: object

df = df.groupby([df[Date_Time].dt.date])[B].mean()
print(df)
Date_Time
2001-10-01    4.5
2001-10-02    6.0
Name: B, dtype: float64

Another solution with resample:

df = df.set_index(Date_Time).resample(D)[B].mean()

print(df)
Date_Time
2001-10-01    4.5
2001-10-02    6.0
Freq: D, Name: B, dtype: float64

resample

df.resample(D, on=Date_Time).mean()

              B
Date_Time      
2001-10-01  4.5
2001-10-02  6.0

Grouper

As suggested by @JosephCottam

df.set_index(Date_Time).groupby(pd.Grouper(freq=D)).mean()

              B
Date_Time      
2001-10-01  4.5
2001-10-02  6.0

Deprecated uses of TimeGrouper

You can set the index to be Date_Time and use pd.TimeGrouper

df.set_index(Date_Time).groupby(pd.TimeGrouper(D)).mean().dropna()

              B
Date_Time      
2001-10-01  4.5
2001-10-02  6.0

Python Pandas Group by date using datetime data

Leave a Reply

Your email address will not be published. Required fields are marked *