Pandas 按不同列分组
我有一个数据帧nf,如下所示:Pandas 按不同列分组,pandas,datetime,group-by,Pandas,Datetime,Group By,我有一个数据帧nf,如下所示: StationID DateTime Channel Count 0 1 2017-10-01 00:00:00 1 1 1 1 2017-10-01 00:00:00 1 201 2 1 2017-10-01 00:00:00 1 8 3 1 2017-10-01 00:00:00 1 2 4 1 2017-10-01 00:00:00 1 0 5 1 2017-10-01 0
StationID DateTime Channel Count
0 1 2017-10-01 00:00:00 1 1
1 1 2017-10-01 00:00:00 1 201
2 1 2017-10-01 00:00:00 1 8
3 1 2017-10-01 00:00:00 1 2
4 1 2017-10-01 00:00:00 1 0
5 1 2017-10-01 00:00:00 1 0
6 1 2017-10-01 00:00:00 1 0
7 1 2017-10-01 00:00:00 1 0
。。。。。。。。。。等等
我想按每小时、每个频道和StationID的值进行分组
输出请求
Station ID DateTime Channel Count
1 2017-10-01 00:00:00 1 232
1 2017-10-01 00:01:00 1 23
2 2017-10-01 00:00:00 1 244...
。。。。。。等等我认为您需要使用聚合总和
,对于日期时间
s,按小时
s添加-它设置分钟
s和秒
s到0
:
print (df)
StationID DateTime Channel Count
0 1 2017-12-01 00:00:00 1 1
1 1 2017-12-01 00:00:00 1 201
2 1 2017-12-01 00:10:00 1 8
3 1 2017-12-01 10:00:00 1 2
4 1 2017-10-01 10:50:00 1 0
5 1 2017-10-01 10:20:00 1 5
6 1 2017-10-01 08:10:00 1 4
7 1 2017-10-01 08:00:00 1 1
df['DateTime'] = pd.to_datetime(df['DateTime'])
df1 = (df.groupby(['StationID', df['DateTime'].dt.floor('H'), 'Channel'])['Count']
.sum()
.reset_index()
)
print (df1)
StationID DateTime Channel Count
0 1 2017-10-01 08:00:00 1 5
1 1 2017-10-01 10:00:00 1 5
2 1 2017-12-01 00:00:00 1 210
3 1 2017-12-01 10:00:00 1 2
print (df['DateTime'].dt.floor('H'))
0 2017-12-01 00:00:00
1 2017-12-01 00:00:00
2 2017-12-01 00:00:00
3 2017-12-01 10:00:00
4 2017-10-01 10:00:00
5 2017-10-01 10:00:00
6 2017-10-01 08:00:00
7 2017-10-01 08:00:00
Name: DateTime, dtype: datetime64[ns]
但如果日期不重要,则仅使用小时:
或者您可以使用:
您好,这不是重复的,因为我需要的值也应该按小时分组。如果我的答案有帮助,请不要忘记-单击答案旁边的复选标记(
v
),将其从灰色变为填充。谢谢
df2 = (df.groupby(['StationID', df['DateTime'].dt.hour, 'Channel'])['Count']
.sum()
.reset_index()
)
print (df2)
StationID DateTime Channel Count
0 1 0 1 210
1 1 8 1 5
2 1 10 1 7
df.groupby(pd.Grouper(key='DateTime', freq='"H'), 'Channel', 'StationID')['Count'].sum()