如何筛选Pandas DataFrame中Score值接近均值±0.001的记录并提取Age值
在Pandas中筛选Score值接近均值±0.001的记录并提取Age值
问题描述:
我拥有一个Pandas DataFrame,数据如下:
序号 age score 5 72 99.424 6 70 99.441 7 69 99.442 8 67 99.443 9 71 99.448 其中score列的均值为99.4396(该均值为score列所有数值的平均值)。请问如何筛选出score值与该均值的差值在±0.001范围内的记录,并提取对应的age值?在本例中,符合条件的age值为67和69。
没问题,这是个很常见的Pandas数据筛选需求,我来一步步帮你实现:
步骤1:准备数据(已有DataFrame可跳过)
先把示例数据转换成Pandas DataFrame,方便后续操作:
import pandas as pd data = { '序号': [5, 6, 7, 8, 9], 'age': [72, 70, 69, 67, 71], 'score': [99.424, 99.441, 99.442, 99.443, 99.448] } df = pd.DataFrame(data)
步骤2:计算Score列的均值
你可以选择自动计算均值(更通用,适合数据更新的场景),或者直接使用给定的固定均值:
# 方法1:自动计算均值 mean_score = df['score'].mean() # 方法2:直接使用给定的均值 # mean_score = 99.4396
步骤3:筛选符合条件的记录
利用布尔索引筛选出score与均值的绝对值差≤0.001的行:
filtered_rows = df[abs(df['score'] - mean_score) <= 0.001]
步骤4:提取对应的Age值
从筛选后的结果中提取age列,转换成列表更方便后续使用:
target_ages = filtered_rows['age'].tolist() print(target_ages) # 输出结果:[69, 67]
完整代码整合
把所有步骤整合起来,完整代码如下:
import pandas as pd # 初始化DataFrame data = { '序号': [5, 6, 7, 8, 9], 'age': [72, 70, 69, 67, 71], 'score': [99.424, 99.441, 99.442, 99.443, 99.448] } df = pd.DataFrame(data) # 计算均值(或直接赋值99.4396) mean_score = df['score'].mean() # 筛选并提取age target_ages = df[abs(df['score'] - mean_score) <= 0.001]['age'].tolist() print("符合条件的age值:", target_ages)
运行这段代码后,就能得到你需要的结果[69, 67]啦。
内容的提问来源于stack exchange,提问作者Savannah
相关产品推荐
相关产品推荐

