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

如何用Python检查CSV文件指定列中是否存在目标值?

问题分析与解决方案

先梳理你代码里的核心问题,这些问题直接导致查询功能失效:

1. 数据写入函数的参数错误

在this_is_the_code_used_to_write_and_sort_the_data函数中,csv.writer.writerow()要求传入单个可迭代对象(比如列表),但你传入了多个独立参数,这会直接触发报错。另外你变量名存在拼写错误(ver_3、ver_4应为var_3、var_4),修正后的写入代码:

def this_is_the_code_used_to_write_and_sort_the_data(var_1, var_2, var_3, var_4, var_5, var_6):
    with open('bin/cache/temp.csv', 'a', encoding='UTF8', newline='') as file:
        writer = csv.writer(file)
        # 将参数打包为列表传入
        writer.writerow([var_1, var_2, var_3, var_4, var_5, var_6])
    
    dataFrame = pd.read_csv('bin/cache/temp.csv')
    dataFrame.sort_values(["Frame","LED"],axis=0, ascending=True,inplace=True,na_position='first')
    dataFrame.to_csv('bin/cache/temp.csv', sep=',', encoding='utf-8', index=False)

2. 查询时的类型不匹配

你的Frame列是整数类型,但查询时用了字符串'1',类型不匹配导致无法匹配到任何结果,必须用整数进行比较。

3. 实现指定值存在性检查的功能

修改查询函数,实现检查17是否存在于Frame列,同时可返回匹配的行或索引:

def check_frame_exists(target_frame):
    df = pd.read_csv('bin/cache/temp.csv')
    # 直接返回布尔值判断是否存在
    exists = target_frame in df['Frame'].values
    print(f"Frame {target_frame} 是否存在: {exists}")
    
    # 获取所有匹配的行
    matching_rows = df[df['Frame'] == target_frame]
    if not matching_rows.empty:
        print("匹配的行内容:")
        print(matching_rows)
        # 获取匹配行的索引列表
        matching_indices = matching_rows.index.tolist()
        print(f"匹配行的索引: {matching_indices}")
    
    return exists

# 调用函数检查17是否存在
check_frame_exists(17)

额外优化:避免重复写入相同Frame值

如果要防止重复写入,可在写入前先做存在性检查:

def write_data_if_not_exists(var_1, var_2, var_3, var_4, var_5, var_6):
    df = pd.read_csv('bin/cache/temp.csv')
    if var_1 not in df['Frame'].values:
        this_is_the_code_used_to_write_and_sort_the_data(var_1, var_2, var_3, var_4, var_5, var_6)
    else:
        print(f"Frame {var_1} 已存在,跳过写入")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:00:09