Python 对列进行分组';时间';通过它';s小时值
我有一个H:M: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:
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
?嗯,是的,这是我没有想到的,这可能会对我的工作产生影响!