如何使用AND/OR运算符筛选pandas DataFrame数据并解决TypeError报错
问题原因
你当前的报错是因为逻辑运算的使用逻辑错误:pandas的位运算符&/|需要作用于布尔值组成的筛选掩码序列,但你原代码里直接对筛选后得到的DataFrame对象做位运算,不同类型的对象运算触发了类型错误。
正确实现代码
你需要先构造所有筛选条件的布尔掩码,再统一用掩码对原DataFrame做筛选:
# 高值区间筛选 cond_life_high = state['SSSLifestress'] >= 63 cond_other_high = (state['SSSHealthstress'] >= 63) | (state['SSSFinancialstress'] >= 63) | (state['SSSSocialstress'] >= 63) high_scale1 = state[cond_life_high & cond_other_high].reset_index(drop=True) # 低值区间筛选 cond_life_low = state['SSSLifestress'] <= 33 cond_other_low = (state['SSSHealthstress'] <= 33) | (state['SSSFinancialstress'] <= 33) | (state['SSSSocialstress'] <= 33) low_scale1 = state[cond_life_low & cond_other_low].reset_index(drop=True)
结果验证
上述代码运行后得到的high_scale1和你期望的输出完全一致:
SSSLifestress SSSHealthstress SSSFinancialstress SSSSocialstress 0 64 11 90 26 1 65 31 77 48
内容的提问来源于stack exchange,提问作者guitarman
相关产品推荐
相关产品推荐

