如何在Pandas DataFrame中按条件筛选行并计算提取的value列均值
错误原因说明
- 变量名不匹配:你定义数据源字典的变量名为
df,但转换为DataFrame时传入了未定义的df2,会直接触发变量未定义报错。 - 筛选逻辑不符合Pandas语法规则:Pandas的行列筛选需要区分行条件和列选择逻辑,你直接把行判断条件放到列选择列表中,会被解析为查找名称为布尔值的列,找不到对应列就会报错。
正确实现代码
import pandas as pd # 构造测试数据集 data = { 'category': ['retail', 'retail', 'airtime', 'electronic', 'retail', 'electronic', 'retail', 'retail','airtime'], 'default': [0, 1, 1, 1, 0, 1, 1, 1, 0], 'year': [2011, 2013, 2014, 2015, 2016, 2017, 2018, 2010, 2009], 'value': [6000, 6500, 3000, 1200, 3200, 4530, 2100, 1000, 3400] } df = pd.DataFrame(data) # 筛选category为retail、且default等于1的行 filtered_df = df[(df['category'] == 'retail') & (df['default'] == 1)] # 输出筛选后的完整数据 print(filtered_df) # 计算筛选后value列的均值 value_mean = filtered_df['value'].mean() print(f"筛选后value列的均值为:{value_mean}")
运行结果
筛选后的数据共3行:
| 索引 | category | default | year | value |
|---|---|---|---|---|
| 1 | retail | 1 | 2013 | 6500 |
| 6 | retail | 1 | 2018 | 2100 |
| 7 | retail | 1 | 2010 | 1000 |
最终计算得到的value列均值为3200.0。
内容的提问来源于stack exchange,提问作者umagba alex
相关产品推荐
相关产品推荐

