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

基于Pandas验证不同结构CSV中指定数值的存在性

嘿,这需求我熟,咱们一步步来实现它!下面是基于Pandas的完整解决方案,包含代码和细节说明:

实现步骤与代码示例

1. 加载两个CSV文件

首先用pandas.read_csv加载结构不同的两个CSV,不用特意处理结构差异,直接加载即可:

import pandas as pd
import numpy as np

# 加载CSV文件,替换成你的实际文件路径
csv1 = pd.read_csv("CSV1.csv")
csv2 = pd.read_csv("CSV2.csv")

2. 从CSV1提取VAL1和VAL2(三位小数浮点数)

假设CSV1中这两个值对应的列名为VAL1和VAL2(如果不是,替换成实际列名就行),提取后咱们可以先做个格式验证,确保是三位小数的浮点数:

# 提取目标值,这里默认取第一行的数值,你可以根据实际需求调整行索引
val1 = csv1["VAL1"].iloc[0]
val2 = csv2["VAL2"].iloc[0]

# 验证是否为三位小数的浮点数(可选,但能避免后续验证出错)
def check_three_decimal(num):
    if not isinstance(num, float):
        return False
    decimal_part = str(num).split(".")[-1]
    return len(decimal_part) == 3

assert check_three_decimal(val1), "VAL1不是三位小数的浮点数"
assert check_three_decimal(val2), "VAL2不是三位小数的浮点数"

3. 验证VAL1是否存在于CSV2的第一列

注意:浮点数容易出现精度误差(比如0.123存成0.1230000001),所以别直接用in判断,用np.isclose做近似匹配更靠谱:

# 获取CSV2的第一列数据
csv2_first_col = csv2.iloc[:, 0]

# 验证VAL1是否在第一列
val1_exists = np.any(np.isclose(csv2_first_col, val1))
if val1_exists:
    print(f"✅ VAL1 {val1} 存在于CSV2的第一列")
else:
    print(f"❌ VAL1 {val1} 不存在于CSV2的第一列")

4. 验证VAL2是否是CSV2的列标题

CSV的列标题一般是字符串类型,所以咱们把VAL2转成字符串后再判断:

# 把VAL2转为字符串,匹配列标题的类型
val2_str = str(val2)

# 验证是否为列标题
if val2_str in csv2.columns:
    print(f"✅ VAL2 {val2} 是CSV2的列标题")
else:
    print(f"❌ VAL2 {val2} 不是CSV2的列标题")

一些注意事项

  • 如果CSV1里的VAL1/VAL2不是固定行的数值,你可以根据实际逻辑调整提取方式,比如筛选特定条件的行
  • 如果CSV2的列标题本身是数字类型(而非字符串),可以直接用val2 in csv2.columns判断,不用转字符串
  • 若CSV文件有特殊分隔符、编码等问题,记得在read_csv里加上对应参数(比如sep=";"、encoding="utf-8")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:36:55