擅长:python、mysql、java
<p>让我们试试这个:</p>
<pre><code>df[['Letters', 'number']] = df['fea1'].str.extract('(?P<letters>[a-zA-Z]+)_?(?P<number>\d+)?')
df['grp'] = (df['number'].fillna(0).astype(int) - 1) // 3
df_q = df.groupby(['Letters', 'grp'])['fea2'].sum()
df_q.index = [f'{i}_q{j+1}' if j != -1 else f'{i}' for i, j in df_q.index]
df_q
</code></pre>
<p>输出:</p>
<pre><code>a_q1 27
a_q2 16
a_q3 7
a_q4 9
be_q1 10
be_q2 9
u 9
Name: fea2, dtype: int64
</code></pre>
<p>详情:</p>
<ul>
<li>使用字符串访问器<code>.str</code>和<code>extract</code>以及正则表达式进行命名捕获
小组</李>
<li>现在,让我们用一点数学来用3的除数对行进行分组</li>
<li>接下来,使用<code>groupby</code>和<code>sum</code></李>
<li>最后,使用列表理解和
f字符串格式</李>
</ul>