Python Panda按时间和列的计数值分组

Python Panda按时间和列的计数值分组,python,python-3.x,pandas,pandas-groupby,Python,Python 3.x,Pandas,Pandas Groupby,假设我有一个包含事件和日志时间的数组,如下所示: Time Event 01/01/2019 8h00 X 01/01/2019 8h10 Y 01/01/2019 9h10 X 02/01/2019 7h10 Z 02/01/2019 8h10 Y 02/01/2019 9h10 Y ... 01/01/2019 [(X,2), (Y,1)] 02/01/2019 [(Y, 2), (Z,1)] ... 目前,我只成功地按时间分组,统计所有事件或列出所有

假设我有一个包含事件和日志时间的数组,如下所示:

Time Event 01/01/2019 8h00 X 01/01/2019 8h10 Y 01/01/2019 9h10 X 02/01/2019 7h10 Z 02/01/2019 8h10 Y 02/01/2019 9h10 Y ...
01/01/2019 [(X,2), (Y,1)]
02/01/2019 [(Y, 2), (Z,1)]
... 
目前,我只成功地按时间分组,统计所有事件或列出所有唯一的事件

data = pd.read_csv('my.csv')    
s1 = data['Time'].groupby(data['Time'].dt.floor('d')).size()    
s2 = data.groupby(data['Time'].dt.floor('d')['Event'].unique().reset_index()
s1输出:

01/01/2019 3
02/01/2019 3
s2输出:

01/01/2019 [X, Y]
02/01/2019 [Y, Z]

我如何实现按时间分组和计算每个事件的数量

将自定义lambda函数用于:


很好,你能告诉我为什么
df['Time'].dt.floor('d')
和为什么不
df['Time'].dt.date
在groupby下,有什么主要区别吗?@anky_91-是的,
df['date'].dt.date
返回python对象
dates
df['Time'].dt.floor('d')
返回没有时间的日期时间。显然,在pandas中,使用像python对象这样的日期时间更好。
df = (data.groupby(data['Time'].dt.floor('d'))['Event']
          .apply(lambda x: list(x.value_counts().items()))
          .reset_index())
print (df)
        Time             Event
0 2019-01-01  [(X, 2), (Y, 1)]
1 2019-02-01  [(Y, 2), (Z, 1)]