You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas格式化列问题:为均值结果添加表头并移除dtype行

问题解答:为均值结果添加表头并移除dtype信息

首先来说第一个问题:为什么df2.columns = ['Questions', 'Mean']没有生效?

你调用df1.mean()后得到的df2其实是一个Pandas Series(一维数据结构),而不是DataFrame。Series只有一个行索引(这里就是各个Question的名称)和对应的值,它根本没有columns这个属性——所以你设置列名的代码相当于在操作一个不存在的属性,自然不会有任何效果。

接下来是第二个问题:怎么移除打印时的dtype: float64行?

这行是Series默认打印输出的一部分,用来告诉你这个Series里的数据类型。要去掉它,最直接的办法就是把Series转换成DataFrame,因为DataFrame的打印格式不会包含这行信息,同时还能帮你实现添加表头的需求。

修改后的代码

这里给你两种可行的修改方式,选哪种都可以:

方式一:用reset_index()转换

import pandas as pd

def logic_one(grades):
    df1 = pd.read_csv(grades)
    del df1['Student ID']
    # 计算均值后,把Series转成带索引列的DataFrame
    df2 = df1.mean().reset_index()
    # 给两列设置名称
    df2.columns = ['Questions', 'Mean']
    print(df2)

方式二:用to_frame()直接转换

import pandas as pd

def logic_one(grades):
    df1 = pd.read_csv(grades)
    del df1['Student ID']
    # 把均值Series直接转成DataFrame,并指定值列的名称
    df2 = df1.mean().to_frame(name='Mean').reset_index()
    # 把原索引列重命名为Questions
    df2.rename(columns={'index': 'Questions'}, inplace=True)
    print(df2)

运行后的正确输出

基于你提供的CSV样本,运行后会得到这样的输出:

Questions      Mean
0  Question 1  7.333333
1  Question 2  8.500000
2  Question 3  7.333333
3  Question 4  8.166667
4  Question 5  4.833333
5  Question 6  7.666667

这样既成功添加了Questions和Mean的表头,也不会再出现dtype: float64那行了。

内容的提问来源于stack exchange,提问作者TC1111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:37:26