<p>将<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">^{<cd1>}</a>与<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.DataFrameGroupBy.agg.html" rel="nofollow noreferrer">^{<cd2>}</a>和<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.count_nonzero.html" rel="nofollow noreferrer">^{<cd3>}</a>一起使用:</p>
<pre><code>df1 = df.groupby(['DATE','LOC'], as_index=False)['INTERATION'].agg(np.count_nonzero)
print (df1)
DATE LOC INTERATION
0 1/11 INDIA 1
1 1/11 LONDON 1
2 2/11 INDIA 2
3 2/11 LONDON 0
4 3/11 LONDON 1
</code></pre>
<p>另一种解决方案是通过compre by not equal by <a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.ne.html" rel="nofollow noreferrer">^{<cd4>}</a>、cast to integers和aggregate <code>sum</code>创建布尔掩码:</p>
<pre><code>df1 = (df.assign(INTERATION = df['INTERATION'].ne(0).astype(int))
.groupby(['DATE','LOC'], as_index=False)['INTERATION']
.sum())
</code></pre>
<p>如果需要也按列分组<code>EMAIL</code>:</p>
<pre><code>df2 = df.groupby(['DATE','LOC','EMAIL'], as_index=False)['INTERATION'].agg(np.count_nonzero)
print (df2)
DATE LOC EMAIL INTERATION
0 1/11 INDIA ap@mail.com 1
1 1/11 INDIA qw@mail.com 0
2 1/11 LONDON az@mail.com 1
3 2/11 INDIA qw@mail.com 1
4 2/11 INDIA rw@mail.com 1
5 2/11 LONDON az@mail.com 0
6 3/11 LONDON az@mail.com 1
</code></pre>