擅长:python、mysql、java
<p>您还可以使用<code>groupby.nunique</code>和左合并来执行布尔掩码:</p>
<pre><code>cols = ['Data1','Data2']
m = df[df['State'].eq("On")].groupby(cols)['Data3'].nunique()
out = (df.merge(m,left_on=cols,right_index=True,how='left',suffixes=('','_counts'))
.fillna({"Data3_counts":0}))
</code></pre>
<hr/>
<pre><code>print(out)
Data1 Data2 Data3 State Data3_counts
0 A 100 1 On 2.0
1 A 100 2 On 2.0
2 A 200 3 Off 0.0
3 B 100 1 Off 1.0
4 B 100 1 On 1.0
5 B 100 1 On 1.0
</code></pre>