【发布时间】:2020-10-16 09:01:51
【问题描述】:
我有一个类似于以下但有数千行和列的数据框:
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 = 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,因此不能按索引位置分组。
不确定是否有更好的方法来做到这一点,或者我是否走在正确的轨道上。
【问题讨论】:
-
您的数据中有
name, x, y普通列吗?另外你的预期输出是什么? -
name, x, y 是列,但我不想对它们执行任何操作。我希望平均文件的输出如下所示:我会将所需的输出添加到问题中,因为它在评论中的格式不正确并删除第一列,因为它们不相关,我可以轻松合并这些列使用我创建的临时 df。
标签: python pandas group-by average mean