<p>我认为您需要将所有不包含<code>a</code>和<code>A</code>到<code>other</code>的值替换为<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.where.html" rel="nofollow noreferrer">^{<cd4>}</a>,将条件替换为<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.isin.html" rel="nofollow noreferrer">^{<cd5>}</a>,然后按列和序列使用<code>groupby</code>:</p>
<pre><code>s = df['End'].where(df['End'].isin(['a','A']), 'other')
print (s)
0 a
1 other
2 other
3 A
4 other
5 other
6 A
7 other
8 other
9 a
10 other
11 other
Name: End, dtype: object
df = (df.groupby(['Type', 'Start', s])
.agg({'Count':'sum', 'Total':'mean'})
.reset_index())
</code></pre>
<p>另一个类似的解决方案是替换列<code>End</code>,并将原始解决方案用于<code>groupby</code>+<code>agg</code>:</p>
<pre><code>df['End'] = np.where(df['End'].isin(['a','A']), df['End'], 'other')
#alternatively
#df['End'] = df['End'].where(df['End'].isin(['a','A']), 'other')
df = (df.groupby(['Type', 'Start', 'End'], as_index=False)
.agg({'Count':'sum', 'Total':'mean'}))
print (df)
Type Start End Count Total
0 A x a 1 3
1 A x other 2 3
2 A y A 2 4
3 A y other 2 4
4 B x A 1 6
5 B x other 5 6
6 B y a 3 6
7 B y other 3 6
</code></pre>