我有一个带有H:M:S格式的Time列的列
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()
但这显然将精确匹配的Time值分组。我只需要按小时分组即可。
答案 0 :(得分:2)
您可以使用列Time
作为索引,事情变得很简单:
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
答案 1 :(得分:0)
我喜欢@sentence的答案,但是与此同时,我发现我可以做到以下几点:
df.Time = [hour.split(':')[0] for hour in df.Time]
它适用于我的情况,但是我不知道我需要做其他事情有什么影响。