You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas代码问题:输入匹配TDSP与Class_charge列时返回全False布尔值,寻求解决方案

问题分析与解决方案

看起来你在Pandas匹配数据时踩了几个常见的小坑,我来帮你梳理下问题并给出修正方案:

你的代码为什么会返回全False?

  1. 循环遍历对象错误:for tdsp in rates: 遍历的是DataFrame的列名(比如'TDSP'、'Class_charge'这些),而不是'TDSP'列里的具体行值。所以你拿输入的内容和列名比较,自然全不匹配,输出全False。
  2. 数据类型不匹配:input()获取的内容是字符串类型,如果你的'TDSP'或'Class_charge'列是数值类型(整数/浮点数),字符串和数值直接比较会返回False。
  3. 逻辑未合并:你分开检查两个列的匹配情况,但没有结合条件找到同时满足两个匹配的行,不符合你原本的需求。

修正后的代码示例

下面是直接实现「输入值匹配'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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 11:47:43