<p>在使用唯一代码创建了有效的分组列之后,可以使用<code>groupby</code>执行此操作。你知道吗</p>
<p>如果每个组的所有行都是连续的,并且标识新组的逻辑是:</p>
<blockquote>
<p>The previous row of a starting row has column <code>'code'</code> with value 'nan'</p>
</blockquote>
<p>当前一个代码值为null时,只需检查代码值是否为null。您可以通过将<code>'code'</code>列逐列移位并用列表检查移位列和原始列的值来完成此操作。<br/>
然后,累积和将为分组创建唯一的值。你知道吗</p>
<pre><code>df['uniquecode'] = [pd.notnull(curr) and pd.isnull(prev) for curr, prev in zip(df['code'], df['code'].shift(1))]
df['uniquecode'] = df['uniquecode'].cumsum()
ddf = df.groupby('uniquecode').agg({'code':'mean', 'item01':'sum', 'item02':'sum', 'item03':'sum', 'item04':'sum', 'item05':'sum'}))
ddf['item01'] = ddf['item01'].apply(lambda x : "'" + x.replace("'","") + "'")
</code></pre>
<p>返回<code>ddf</code>:</p>
<pre><code> code item01 item02 item03 item04 item05
uniquecode
1 1111.0 'abcd' 123.0 234.0 345.0 440.0
2 2222.0 'bbcde' 123.0 234.0 345.0 456.0
3 3333.0 'db' 123.0 234.0 345.0 456.0
4 1111.0 'cbcde' 123.0 234.0 345.0 456.0
5 5555.0 'a' 0.0 0.0 0.0 0.0
</code></pre>
<p>最后一行使用<code>apply</code>删除不需要的<code>'</code>字符,因为所有字符都被顶点包围。<br/>
您可以通过执行<code>ddf.reset_index(drop=True, inplace=True)</code>来摆脱<code>'uniquecode'</code>索引</p>