Итерация каждого столбца в CSV и применение шифрования к каждому столбцу

#python #for-loop

#python #for-цикл

Вопрос:

Здравствуйте, я новичок в python, и я попытался применить функцию pycrypt.caesar.encrypt(column_name,column_number) к каждому столбцу в CSV для шифрования. Я пробовал что-то вроде этого

 import pycrypt
import pandas as pd

df = pd.read_csv('test.csv')
print(df)
#col=df.columns
#print(col)
leng=range(len(df.columns))
print(leng)
j=0
for col in df.columns[0:,] and j in leng:
     #print(col)
     df['col']=df['col'].apply(lambda col: pycrypt.caesar.encrypt(col,j))
     print(df)
 

выдает ошибку

 Traceback (most recent call last):
File "C:/Users/kalya/AppData/Local/Temp/Pseudo.py/main.py", line 12, in 
<module>
for col in df.columns[0:,] and j in leng:
 File "C:Python38libsite-packagespandascoreindexesbase.py", line 2419, 
 in __nonzero__
  raise ValueError(
ValueError: The truth value of a Index is ambiguous. Use a.empty, a.bool(), 
a.item(), a.any() or a.all().
 

что я делаю не так? я хотел зашифровать все столбцы в csv итеративно по циклу. пожалуйста, направьте меня

Комментарии:

1. Вы должны включить обратную трассировку или, по крайней мере, точную строку, которая вызвала исключение

2. Добавлена обратная трассировка

Ответ №1:

Если вы хотите выполнить итерацию по столбцам в фрейме данных и применить к каждому столбцу другой сдвиг Цезаря, вы можете сделать это:

 for index,column in enumerate(df):
    df[column]=df[column].apply(lambda x: pycrypt.caesar.encrypt(x,index))

print(df)