擅长:python、mysql、java
<p>一个选项是按<code>level=0</code>分组:</p>
<pre><code>(df.set_index(['name','x','y'])
.groupby(level=0, axis=1)
.mean().reset_index()
)
</code></pre>
<p>输出:</p>
<pre><code> name x y ghb_00hr ghl_06hr
0 gene1 x y 2.333333 2.0
1 gene2 x y 6.000000 1.5
</code></pre>
<hr/>
<p><strong>更新</strong>:对于修改后的问题:</p>
<pre><code>d = df.filter(like='gh')
# or d = df.iloc[:, 2:]
# depending on your columns of interest
names = d.columns.str.rsplit('_', n=1).str[0]
d.groupby(names, axis=1).mean()
</code></pre>
<p>输出:</p>
<pre><code> ghb_00hr ghl_06hr
0 2.333333 2.0
1 6.000000 1.5
</code></pre>