Python Pandas代码问题:输入匹配TDSP与Class_charge列时返回全False布尔值,寻求解决方案
问题分析与解决方案
看起来你在Pandas匹配数据时踩了几个常见的小坑,我来帮你梳理下问题并给出修正方案:
你的代码为什么会返回全False?
- 循环遍历对象错误:
for tdsp in rates:遍历的是DataFrame的列名(比如'TDSP'、'Class_charge'这些),而不是'TDSP'列里的具体行值。所以你拿输入的内容和列名比较,自然全不匹配,输出全False。 - 数据类型不匹配:
input()获取的内容是字符串类型,如果你的'TDSP'或'Class_charge'列是数值类型(整数/浮点数),字符串和数值直接比较会返回False。 - 逻辑未合并:你分开检查两个列的匹配情况,但没有结合条件找到同时满足两个匹配的行,不符合你原本的需求。
修正后的代码示例
下面是直接实现「输入值匹配'TDSP'和'Class_charge'列」的代码:
import pandas as pd # 读取数据(确保文件路径正确) rates = pd.read_csv('x') display(rates) # 获取输入并处理(根据你的数据类型调整转换逻辑) tdsp_input = input("Enter tdsp: ").strip() class_input = input("Enter class: ").strip() # 重要:如果你的TDSP/Class_charge是数值类型,需要转换输入类型 # 比如列是整数: # tdsp_input = int(tdsp_input) # class_input = int(class_input) # 比如列是浮点数: # tdsp_input = float(tdsp_input) # class_input = float(class_input) # 生成同时满足两个条件的布尔掩码 match_condition = (rates['TDSP'] == tdsp_input) & (rates['Class_charge'] == class_input) # 筛选匹配的行 matching_records = rates[match_condition] # 输出结果 if not matching_records.empty: print("找到匹配的记录:") display(matching_records) else: print("未找到匹配记录,请检查输入内容或数据格式是否一致。")
额外提示
- 可以先执行
print(rates.dtypes)查看各列的数据类型,确保输入的类型和列类型完全一致。 - 如果你的列值存在前后空格,可以用
rates['TDSP'].str.strip()来去除空格后再比较,避免因空格导致的匹配失败。
内容的提问来源于stack exchange,提问作者ErenLulu123
相关产品推荐
相关产品推荐

