Pandas多条件筛选列取值遇Invalid index error问题求解
问题分析与解决
你的代码有三个明显问题,导致了索引错误:
- 变量名不统一:代码里混用了
df和data两个变量名,得保持一致(假设原DataFrame叫df)。 - 逻辑运算优先级错误:
&的优先级比==高,原代码里data["Package"] == 'Half' & (data['Age'] >= 50)会先计算'Half' & (data['Age'] >=50),完全不符合逻辑需求。必须把Package == 'Half'和Age >=50用括号括起来,保证这两个条件先做与运算。 - 索引方式错误:Pandas里不能直接用
[条件, '列名']这种格式同时筛选行和列,得用.loc[行条件, 列名]的语法。
正确代码写法
写法一:修正逻辑括号与索引方式
subdf = df.loc[(df["Package"] == 'Full') | ((df["Package"] == 'Half') & (df['Age'] >= 50)), 'Name']
写法二:用isin简化条件(更清晰)
如果要判断Package是Full或Half,用isin比多次==更简洁,也不容易出错:
# 先定义筛选条件 filter_condition = (df["Package"].isin(['Full', 'Half'])) & (df['Age'] >= 50) # 筛选Name列 subdf = df.loc[filter_condition, 'Name']
运行任意一种写法后,subdf都会输出你期望的结果:
Toni Stark Christ
内容的提问来源于stack exchange,提问作者beginner
相关产品推荐
相关产品推荐

