我尝试根据列名称对列进行分组后对列进行平均。下面生成了一个示例数据帧。所有在 _
前面具有相同字符串的列名需要一起求平均值。输出将是一个 10x3 列。
from pandas import DataFrame
import numpy as np
df = DataFrame(np.random.randint(0,100,size=(10, 7)))
df.columns = ['9_0', '9_1', '99_0', '99_1', '99_2', '999_0', '999_1']
df
最佳答案
您可以使用 lambda 函数提取公共(public)字符串,并将其用作按列对数据进行分组的键。
df.groupby(lambda x: x.split('_')[0], axis=1).mean()
Out[903]:
9 99 999
0 52.0 50.333333 68.5
1 43.0 44.666667 47.0
2 20.0 62.666667 48.0
3 58.5 65.000000 77.5
4 46.0 64.000000 30.0
5 16.5 55.000000 57.5
6 51.5 48.333333 43.0
7 20.0 44.000000 35.5
8 57.5 11.666667 36.0
9 31.5 28.000000 49.0
关于python - 根据列名分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49000361/