Python 对列进行分组';时间';通过它';s小时值

Python 对列进行分组';时间';通过它';s小时值,python,pandas,dataframe,grouping,pandas-groupby,Python,Pandas,Dataframe,Grouping,Pandas Groupby,我有一个H:M:S格式的时间列 ColA Time Amount a 10:32:01 10 b 09:10:56 10 c 13:43:11 10 d 10:05:00 10 e 09:35:30 10 我只关心小时值,我想以如下表结束: Time Amount 10:00:00 20 09:00:00 20 13:00:

我有一个H:M:S格式的时间列

ColA    Time       Amount
a       10:32:01      10
b       09:10:56      10   
c       13:43:11      10
d       10:05:00      10
e       09:35:30      10
我只关心小时值,我想以如下表结束:

Time       Amount
10:00:00      20
09:00:00      20   
13:00:00      10
我正在这样做:

df.groupby('Time')['Amount'].sum()

但这显然会将精确匹配的时间值分组。我只需要按小时分组。

您可以使用
时间列作为索引,事情就变得简单了:

import pandas as pd

df = pd.DataFrame({"ColA":["a", "b", "c", "d", "e"],
                  "Time":["10:32:01", "09:10:56", "13:43:11", "10:05:00", "09:35:30"],
                  "Amount":[10,10,10,10,10]})

df['Time'] = pd.to_datetime(df['Time'])
df.set_index('Time', inplace=True)

df.groupby(df.index.hour).sum()
你会得到:

    Amount
Time    
9   20
10  20
13  10

我喜欢@句的答案,但同时我发现我可以做到以下几点:

df.Time = [hour.split(':')[0] for hour in df.Time]

它适用于我的情况,但我不知道我还需要做其他事情会有什么影响。

13:43:11
14:00:00
10:32:01
11:00:00
?嗯,是的,这是我没有想到的,这可能会对我的工作产生影响!