<p>可以使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.normalize.html" rel="nofollow noreferrer">^{<cd1>}</a>获取分组日期。按<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.SeriesGroupBy.aggregate.html" rel="nofollow noreferrer">^{<cd2>}</a>聚合计数,然后对列进行排序,如下所示:</p>
<pre><code>(df.groupby([df['TimeCreated'].dt.normalize(),
'Institution_Name'])
.agg(EventID_count=('EventID', 'count'))
.reset_index()
.sort_values(['TimeCreated', 'Institution_Name'], ascending=[True, False], ignore_index=True)
)
</code></pre>
<p>如果<code>TimeCreated</code>是索引,则可以使用<code>df.index.normalize()</code>,如下所示:</p>
<pre><code>(df.groupby([df.index.normalize(),
'Institution_Name'])
.agg(EvenetID_count=('EventID', 'count'))
.reset_index()
.sort_values(['TimeCreated', 'Institution_Name'], ascending=[True, False], ignore_index=True)
)
</code></pre>
<p><strong>结果:</strong></p>
<pre><code> TimeCreated Institution_Name EventID_count
0 2021-03-22 H2 7
1 2021-03-22 H1 1
2 2021-03-23 H9 1
3 2021-03-23 H8 2
4 2021-03-23 H7 1
5 2021-03-23 H6 1
6 2021-03-23 H5 1
7 2021-03-23 H4 1
8 2021-03-23 H3 1
9 2021-03-23 H2 2
10 2021-03-23 H10 1
11 2021-03-23 H1 1
</code></pre>
<p>您的代码实际上非常接近(因为<code>TimeCreated</code>是一个索引),只需更改列的排序方式,如下所示:</p>
<pre><code>grouper = df.groupby([pd.Grouper(freq='1D'), 'Institution_Name'])
grouper['EventID'].count().reset_index().sort_values(['TimeCreated', 'Institution_Name'], ascending=[True, False], ignore_index=True)
</code></pre>
<p>这些代码的结果与上面相同,只是<code>EventID</code>的列名仍然是<code>EventID</code>,而不是<code>EventID_count</code></p>