擅长:python、mysql、java
<p>也可以使用<code>.transform('first')</code>一步完成:</p>
<pre><code>In [280]: df['D'] = df.groupby('A')['C'].transform('first').eq(df['C']).astype(np.int8)
In [281]: df
Out[281]:
A B C D
0 1 10 100 1
1 1 15 150 0
2 2 20 200 1
3 2 25 250 0
4 3 30 300 1
5 3 35 350 0
</code></pre>
<p><strong>说明:</strong><code>GroupBy.transform('func')</code>返回一个与应用的原始DF长度相同的向量<code>func</code></p>
<pre><code>In [14]: df.groupby('A')['C'].transform('first')
Out[14]:
0 100
1 100
2 200
3 200
4 300
5 300
Name: C, dtype: int64
In [15]: df.groupby('A')['C'].transform('max')
Out[15]:
0 150
1 150
2 250
3 250
4 350
5 350
Name: C, dtype: int64
In [16]: df.groupby('A')['C'].transform('min')
Out[16]:
0 100
1 100
2 200
3 200
4 300
5 300
Name: C, dtype: int64
In [17]: df.groupby('A')['C'].transform('mean')
Out[17]:
0 125
1 125
2 225
3 225
4 325
5 325
Name: C, dtype: int64
In [18]: df.groupby('A')['C'].transform('sum')
Out[18]:
0 250
1 250
2 450
3 450
4 650
5 650
Name: C, dtype: int64
</code></pre>