Luca
Luca

Reputation: 10996

pandas change column type to datetime afterr group by

This is related to a previous question which I asked here (pandas average by timestamp and day of the week).

Here, I perform a groupby operation as follows:

df = pd.DataFrame(np.random.random(2838),index=pd.date_range('2019-09-13 12:40:00', periods=2838, freq='5T'))

# Reset the index
df.reset_index(inplace=True)

df.groupby(df.index.dt.strftime('%A %H:%M')).mean()
df.reset_index(inplace=True)

Now if I check the data types of the column, we have:

index     object
0        float64

The column does not retain its datetime data type. How can I still preserve the column data type?

Upvotes: 1

Views: 182

Answers (1)

Quang Hoang
Quang Hoang

Reputation: 150765

I wouldn't do grouping like that, instead, I would do double grouping/indexing:

days = df.index.day_name()
times = df.index.time

df.groupby([days,times]).mean()

which gives (head):

                        0
Friday 00:00:00  0.524322
       00:05:00  0.857684
       00:10:00  0.593461
       00:15:00  0.755158
       00:20:00  0.049511

where the first level index is the (string) day names, and second level index are datetime type.

Upvotes: 1

Related Questions