我的数据集中有四列,其中一列是时代的时间戳,我使用pd.to_datetime将其转换为datetime,我想获取每分钟的每组计数
数据集是这样的
timestamp col2 col3 col4
1555127370.734 x a p
1555127370.980 y b q
1555127371.376 z c r
1555127371.430 x a p
1555127371.313 w g t
1555127371.748 z h u
所以我需要将它们按每col2每分钟,每col3每col4的分钟数以及该组的数量进行分组。
有没有办法做这只大熊猫?
编辑 输出应该像这样
1555127340 x a p 2
1555127340 y b q 1
1555127340 z c r 1
1555127340 w g t 1
1555127340 z h u 1
提前谢谢
答案 0 :(得分:1)
将DataFrame.resample
与Resampler.size
一起使用:
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')
df = df.resample('min', on='timestamp').size().reset_index(name='count')
print (df)
timestamp count
0 2019-04-13 03:49:00 6
df = df.groupby(pd.Grouper(freq='min', key='timestamp')).size().reset_index(name='count')
另一种方法ID通过Series.dt.floor
删除秒数并传递给groupby
:
df = df.groupby(df['timestamp'].dt.floor('min')).size().reset_index(name='count')
print (df)
timestamp count
0 2019-04-13 03:49:00 6
如果需要将多列分组,请使用list
:
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')
df1 = (df.groupby([pd.Grouper(freq='min', key='timestamp'), 'col2', 'col3', 'col4'],sort=False)
.size()
.reset_index(name='count'))
print (df1)
timestamp col2 col3 col4 count
0 2019-04-13 03:49:00 x a p 2
1 2019-04-13 03:49:00 y b q 1
2 2019-04-13 03:49:00 z c r 1
3 2019-04-13 03:49:00 w g t 1
4 2019-04-13 03:49:00 z h u 1
答案 1 :(得分:0)
尝试以下代码:
print(df.groupby(df['timestamp'].map(lambda x: x.minute)).count())