我有一个类似于以下的数据框,但有数千行和数千列:
x y ghb_00hr_rep1 ghb_00hr_rep2 ghb_00hr_rep3 ghl_06hr_rep1 ghl_06hr_rep2
x y 2 3 2 1 3
x y 5 7 6 2 1
我希望我的输出如下所示:
ghb_00hr hl_06hr
2.3 2
6 1.5
我的目标是找到匹配列的平均值。我已经想到了:temp = df.groupby(name, axis=1).agg('mean')
但是我不确定如何将“name”定义为匹配列
我以前的策略如下:
name = pd.Series(['_'.join(i.split('_')[:-1])
for i in df.columns[3:]],
index = df.columns[3:]
)
temp = df.groupby(name, axis=1).agg('mean')
avg = pd.concat([df.iloc[:, :3], temp],
axis=1
)
但是,“复制”的数量在1-4之间,因此不能选择按索引位置分组
不确定是否有更好的方法来做这件事,或者我是否在正确的轨道上
一个选项是按
level=0
分组:输出:
更新:对于修改后的问题:
输出:
您可以将
df.columns
转换为set,然后迭代:意志输出
如果顺序重要,请使用
sorted
:从这里你可以得到你想要的任何格式的输出
相关问题 更多 >
编程相关推荐