如何按行名称分组计算各列中位数并生成新的DataFrame
实现方法
你可以直接用Pandas的分组聚合功能实现,步骤如下:
- 首先确认你的
NAME字段是分组依据,如果是普通列直接用groupby方法,如果是DataFrame的索引可以调整分组参数。 - 调用
median()方法对分组后的各数值列计算中位数,之后调整列名即可匹配你的预期输出格式。
参考代码
import pandas as pd # 假设你的原始DataFrame名为df # 按NAME列分组,计算各数值列中位数 result_df = df.groupby('NAME', as_index=False).median() # 重命名列匹配预期格式 result_df = result_df.rename(columns={ "NAME": "Name", "Value 1": "Value 1 (median)", "Value 2": "Value 2 (median)", "Value 3": "Value 3 (median)" })
如果你的NAME是DataFrame的索引而非普通列,修改分组逻辑即可:
result_df = df.groupby(level=0).median().reset_index() # 后续重命名列的逻辑和上面一致
效果验证
我们可以用模拟数据测试:
# 模拟测试数据 df = pd.DataFrame({ 'NAME': ['Row 1', 'Row 1', 'Row 1', 'Row 2', 'Row 2', 'Row 2', 'Row 3', 'Row 3', 'Row 3'], 'Value 1': [6,7,8,2,3,4,3,4,5], 'Value 2': [4,5,6,0,1,2,5,6,7], 'Value 3': [1,2,3,6,7,8,0,1,2] })
运行上述代码后得到的result_df和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Natasha H
相关产品推荐
相关产品推荐

