回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>假设我有一个df,看起来像这样:</p>
<pre class="lang-py prettyprint-override"><code>
df = pd.DataFrame({'Data1' : ['A', 'A', 'A', 'B', 'B', 'B'],
'Data2' : [100, 100, 200, 100, 100, 100],
'Data3' : [1, 2, 3, 1, 1, 1],
'State' : ['On', 'On', 'Off', 'Off', 'On', 'On']})
</code></pre>
<pre><code>+-------+-------+-------+-------+
| Data1 | Data2 | Data3 | State |
+-------+-------+-------+-------+
| A | 100 | 1 | On |
| A | 100 | 2 | On |
| A | 200 | 3 | Off |
| B | 100 | 1 | Off |
| B | 100 | 1 | On |
| B | 100 | 1 | On |
+-------+-------+-------+-------+
</code></pre>
<p>我想对Data1、Data2进行分组,然后对Data3进行nunique计数,但只对状态值为“on”的一个进行计数</p>
<p>所以我的结果是这样的:</p>
<pre><code>+-------+-------+-------+-------+-------+
| Data1 | Data2 | Data3 | State | Count |
+-------+-------+-------+-------+-------+
| A | 100 | 1 | On | 2 |
| A | 100 | 2 | On | 2 |
| A | 200 | 3 | Off | 0 |
| B | 100 | 1 | Off | 1 |
| B | 100 | 1 | On | 1 |
| B | 100 | 1 | On | 1 |
+-------+-------+-------+-------+-------+
</code></pre>
<p>我知道这是错误的,因为它是按状态分组的,但我不知道如何使它只按Data1和Data2分组,而只按State='On'close进行计数</p>
<pre><code>df['Count'] = df.groupby(['Data1', 'Data2', 'State'])['Data3'].transform('nunique')
</code></pre>
<p>感谢所有的帮助</p>