You need to enable JavaScript to run this app. Python遍历CSV列调用pycrypt凯撒加密报索引歧义错误,如何实现逐列加密
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历CSV列调用pycrypt凯撒加密报索引歧义错误,如何实现逐列加密

代码报错原因与修正方案

核心错误点

  • 循环语法写法错误:原代码中for col in df.columns[0:,] and j in leng: 不符合Python语法规则。此处and会被解析为逻辑与运算符,pandas返回的Index列索引对象无法直接转换为布尔值做逻辑判断,直接触发ValueError: The truth value of a Index is ambiguous报错。其中df.columns[0:,]本身是等价于全量列索引的写法,没有逻辑问题,错在把两个独立的遍历目标用逻辑与符号拼接在for语句里。
  • 列取值逻辑错误:循环内写的df['col']是固定读取列名为"col"的列,并没有使用循环变量存储的当前列名,无法对目标列执行加密操作。
  • 序号取值逻辑错误:原代码把j=0定义在循环外部,即使循环结构修正,加密用的列序号j也始终为0,不会随遍历的列自动递增。

修正后的实现代码

import pycrypt
import pandas as pd

# 读取源CSV文件
df = pd.read_csv('test.csv')

# 同时遍历列序号(作为加密偏移参数)与对应列名
for col_index, col_name in enumerate(df.columns):
    # 对当前列的所有单元格逐行执行加密
    df[col_name] = df[col_name].apply(
        lambda cell_content: pycrypt.caesar.encrypt(cell_content, col_index)
    )

# 加密完成后保存结果(index=False表示不写入pandas自动生成的行号索引)
df.to_csv('encrypted_test.csv', index=False)

注意:凯撒加密仅适配文本类输入,如果你的CSV中存在数值、日期类非文本列,需要先将列内容转换为字符串格式再执行加密,避免触发类型匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 06:36:04