我有一个如下所示的日期框:
timestamp class
2019-07-01 00:59:56 A
2019-07-01 11:24:19 B
2019-07-01 12:41:34 B
2019-08-01 05:22:11 A
2019-08-01 07:05:06 A
现在我需要知道在特定的一天每个类(class)有多少行。
所以最终结果应该是这样的:
timestamp class count
2019-07-01 A 1
2019-07-01 B 2
2019-08-01 A 2
我不知道应该如何开始解决这个问题。
提前致谢!
最佳答案
使用GroupBy.size
与 Series.dt.date
:
#if necessary
df['timestamp'] = pd.to_datetime(df['timestamp'])
df1 = df.groupby([df['timestamp'].dt.date,'class']).size().reset_index(name='count')
print (df1)
timestamp class count
0 2019-07-01 A 1
1 2019-07-01 B 2
2 2019-08-01 A 2
或者GroupBy.count
在 groupby
之后指定列:
df1 = df.groupby([df['timestamp'].dt.date,'class'])['class'].count().reset_index(name='count')
print (df1)
timestamp class count
0 2019-07-01 A 1
1 2019-07-01 B 2
2 2019-08-01 A 2
区别是count
排除缺失值,size
不排除。但因为这里还将 class
列传递给 by
参数中的 groupby
,所以它的工作原理相同 - 两种解决方案都排除了缺失值。
关于python - pandas 数据帧按类和时间戳分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59552596/