あなたは、列名と集約mean
の最初の文字でgroupby
を使用することができます。
print (df.columns.str[0])
Index(['a', 'a', 'b', 'b'], dtype='object')
df = df.groupby([df.columns.str[0]], axis=1).mean()
print (df)
a b
0 1.5 3.5
1 3.5 4.5
2 6.5 5.5
3 7.0 4.0
groupby
ためSeries
を作成するための別の解決策は、正規表現によってextract
です:
print (df.columns.str.extract("([a-zA-Z])", expand=False))
Index(['a', 'a', 'b', 'b'], dtype='object')
df = df.groupby([df.columns.str.extract("([a-zA-Z])", expand=False)], axis=1).mean()
print (df)
a b
0 1.5 3.5
1 3.5 4.5
2 6.5 5.5
3 7.0 4.0
あなたはこれまでに試したことの例と期待している出力の例を少しはっきりさせるべきだと思います。 – Marusyk