擅长:python、mysql、java
<p>为了提高性能,我建议不要按组进行过滤,而是在预处理帮助器列时进行过滤,然后仅聚合<code>sum</code>,并使用最后一个值<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.last.html" rel="nofollow noreferrer">^{<cd2>}</a>:</p>
<pre><code>df1 = (df.assign(b = df['B_ID'].str.startswith('walkin').astype(int),
c = df['B_ID'].str.startswith('overbook').astype(int))
.groupby('Session')
.agg(no_show=('slot_num', 'last'),
num_of_walkin=('b', 'sum'),
num_of_overbook=('c', 'sum')
)
.reset_index())
print (df1)
Session no_show num_of_walkin num_of_overbook
0 S1 9 3 2
1 S2 8 3 2
2 S3 3 1 0
</code></pre>