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

Pandas筛选特定货币值时返回全部索引问题求助

问题分析与解决

你遇到的两个函数都返回所有行索引,核心原因是字符串匹配不精准,大概率是CSV里的Currency值和你写的判断条件对不上,具体原因和解决方法如下:

常见问题点

  • 字符串带空白:CSV里的Currency值可能有前导/尾随空格、制表符,比如实际是' Swiss Franc '而不是'Swiss Franc',导致精确匹配失败。
  • 大小写不统一:比如CSV里是'swiss franc'或者'SWISS FRANC',和你写的大小写不一致,判断条件不触发。
  • CSV读取错了:如果CSV实际用的不是纯逗号分隔(比如逗号前后带空格),你用sep=','会把多列混在一起,导致Currency列的值全是乱的,自然所有行都不符合有效列表。

一步步排查解决

1. 先查看Currency列的真实内容

先打印部分数据,确认值的格式:

# 打印前10行的Currency值
print(df['Currency'].head(10))
# 查看所有唯一值,确认有哪些内容
print(df['Currency'].unique())
# 检查字符串长度,判断有没有隐藏空白
print(df['Currency'].apply(len).head(10))

2. 清理字符串空白

如果发现有空白字符,先把列清洗干净:

# 去除前后所有空白字符(空格、制表符、换行)
df['Currency'] = df['Currency'].str.strip()

3. 解决大小写匹配问题

如果是大小写不一致,可以统一转成相同大小写再判断:

# 转成小写后匹配Swiss Franc
ids_invalid_currency = df[df['Currency'].str.lower() == 'swiss franc'].index.tolist()

# 第二个函数统一转大写后匹配有效列表
valid_names = ['USD', 'JKF', 'CAD']
sus_name = df[~df['Currency'].str.upper().isin([name.upper() for name in valid_names])]

4. 修正CSV读取方式

如果CSV分隔符不是纯逗号(比如逗号前后有空格),用下面的方式读取:

df = pd.read_csv('data/data.csv', sep='\s*,\s*', engine='python')

修正后的完整代码

import pandas as pd

# 读取CSV,兼容分隔符前后带空格的情况
df = pd.read_csv('data/data.csv', sep='\s*,\s*', engine='python')
# 清理Currency列的空白字符
df['Currency'] = df['Currency'].str.strip()

def invalid_currency(df):
    # 统一小写后匹配,避免大小写问题
    ids_invalid_currency = df[df['Currency'].str.lower() == 'swiss franc'].index.tolist()
    print(ids_invalid_currency)
    return ids_invalid_currency

def invalid_currency_names(df):
    valid_names = ['USD', 'JKF', 'CAD']
    # 统一转大写后判断是否在有效列表中
    sus_name = df[~df['Currency'].str.upper().isin([name.upper() for name in valid_names])]
    ids_sus_name = sus_name.index.to_list()
    print("Currency with invalid values: {}".format(ids_sus_name))
    return ids_sus_name

output_1 = invalid_currency(df)
out_2 = invalid_currency_names(df)

内容的提问来源于stack exchange,提问作者madgoat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:02:34