DataFrame中数值意外触发if语句的问题排查求助
问题原因与解决方案
核心问题
你代码里的条件判断逻辑错误,导致所有行都被判定为需要跳过。
原代码中的if variable == "Unknown" or 'Unavailable'等价于(variable == "Unknown") or ('Unavailable'),而字符串'Unavailable'属于真值(非空字符串在布尔判断中恒为True),所以不管variable是数值还是其他字符串,这个条件永远成立,所有行都会执行跳过逻辑。
修正遍历版本
修改条件判断,明确检查variable是否等于两个目标字符串中的一个:
another_list = [] df = pd.read_excel('C:/Users/Miles/PycharmProjects/pythonProject1/Reservation Data.xlsx') for all_entries in range(len(df['Median Income'])): variable = df.at[all_entries, 'Median Income'] # 正确的条件判断:逐个检查或用in操作符 if variable == "Unknown" or variable == "Unavailable": print(f'Passed {variable}') else: print('condition') another_list.append([df.at[all_entries, 'Native American Population'], df.at[all_entries, 'Median Income']]) print(another_list)
也可以用in简化判断:
if variable in ("Unknown", "Unavailable"):
更优的Pandas向量化写法
遍历DataFrame是低效的,推荐用Pandas自带的向量化筛选,代码更简洁且性能更高:
df = pd.read_excel('C:/Users/Miles/PycharmProjects/pythonProject1/Reservation Data.xlsx') # 筛选出Median Income不属于Unknown/Unavailable的行 filtered_data = df[~df['Median Income'].isin(["Unknown", "Unavailable"])] # 提取需要的列并转为列表格式 another_list = filtered_data[['Native American Population', 'Median Income']].values.tolist() print(another_list)
内容的提问来源于stack exchange,提问作者Amaranth_Gray
相关产品推荐
相关产品推荐

