擅长:python、mysql、java
<p>使用<code>shift</code>和<code>cumsum</code>创建grouper列:</p>
<pre><code>df['grp'] = df.groupby(['YEAR'])['REGION'].apply(lambda x: (x != x.shift(1).bfill()).cumsum())
df_out = df.groupby(['YEAR','REGION','grp'], sort=False).sum().reset_index()
df_out = df_out.drop('grp', axis=1)
</code></pre>
<p>输出:</p>
<pre><code> YEAR REGION POWER
0 2009 West 3.43
1 2009 East 19.30
2 2010 West 11.90
3 2010 North 19.40
4 2010 West 3.00
5 2011 East 16.66
</code></pre>
<p>详细说明了grouper列,grp在聚合之前的样子。对于每年检查的地区,以以前记录的地区,如果不同的增量为1。然后,康姆在那一年创建了小组。你知道吗</p>
<pre><code> YEAR REGION POWER grp
0 2009 West 1.66 0
1 2009 West 1.77 0
2 2009 East 10.60 1
3 2009 East 8.70 1
4 2010 West 11.90 0
5 2010 North 14.80 1
6 2010 North 4.60 1
7 2010 West 3.00 2
8 2011 East 7.00 0
9 2011 East 9.66 0
</code></pre>