如何在不修改原数据集的前提下删除指定行并计算特定列平均值
解决方法
问题分析
你的代码存在两个核心问题:
- Pandas的
drop()方法默认返回新的DataFrame,不会修改原数据集,但你没有将返回结果赋值给变量,相当于白执行了删除操作。 Nba.drop([25,72,63],axis=0),['Age'].mean()是语法错误,逗号分隔的写法无法实现链式操作,正确逻辑应该是先获取删除指定行后的数据集,再选取目标列计算平均值。
正确实现代码
以下两种方法都不会修改原数据集,仅基于原数据生成子集计算平均值:
方法1:链式调用drop()与列选取
import pandas as pd import numpy as np # 读取原数据集,原数据全程保持不变 nba = pd.read_csv(r"C:\Users\User\Downloads\nba.CSV") # 删除指定行后直接计算Age列平均值 age_average = nba.drop([25, 72, 63], axis=0)['Age'].mean() print(age_average)
方法2:用.loc排除指定索引行
如果担心drop()的索引定位问题,可以用isin()配合布尔索引排除目标行:
import pandas as pd import numpy as np nba = pd.read_csv(r"C:\Users\User\Downloads\nba.CSV") # 排除索引为25、72、63的行,计算Age列平均值 age_average = nba.loc[~nba.index.isin([25, 72, 63]), 'Age'].mean() print(age_average)
注意事项
- Python是大小写敏感语言,变量名
NBA和Nba会被视为不同变量,建议保持命名统一(比如全小写nba)。 - 两种方法都不会修改原
nba数据集,完全符合你"不修改原数据集"的需求。
内容的提问来源于stack exchange,提问作者Debanjan Ghosh
相关产品推荐
相关产品推荐

