How To Encode And Decode A Column In Python Pandas?
load = pd.DataFrame({'A':list('abcdef'), 'B':[4,5,4,5,5,4], 'C':[7,8,9,4,2,0], 'D':[1,3,5,4,2,0], 'E':[5
Solution 1:
You can use this solution implemented to pandas by Series.apply
:
from Crypto.Cipher import XOR
import base64
def encrypt(key, plaintext):
cipher = XOR.new(key)
return base64.b64encode(cipher.encrypt(plaintext))
def decrypt(key, ciphertext):
cipher = XOR.new(key)
return cipher.decrypt(base64.b64decode(ciphertext))
load['Encoded_Column'] = load['F'].apply(lambda x: encrypt('password',x))
load['Decoded_Column'] = (load['Encoded_Column'].apply(lambda x: decrypt('password', x))
.str.decode("utf-8"))
print (load)
A B C D E F Encoded_Column Decoded_Column
0 a 4715 a b'EQ==' a
1 b 5833 a b'EQ==' a
2 c 4956 a b'EQ==' a
3 d 5449 b b'Eg==' b
4 e 5222 b b'Eg==' b
5 f 4004 b b'Eg==' b
Another solution:
import base64
def encode(key, clear):
enc = []
for i in range(len(clear)):
key_c = key[i % len(key)]
enc_c = chr((ord(clear[i]) + ord(key_c)) % 256)
enc.append(enc_c)
return base64.urlsafe_b64encode("".join(enc).encode()).decode()
def decode(key, enc):
dec = []
enc = base64.urlsafe_b64decode(enc).decode()
for i in range(len(enc)):
key_c = key[i % len(key)]
dec_c = chr((256 + ord(enc[i]) - ord(key_c)) % 256)
dec.append(dec_c)
return "".join(dec)
load['Encoded_Column'] = load['F'].apply(lambda x: encode('password',x))
load['Decoded_Column'] = load['Encoded_Column'].apply(lambda x: decode('password', x))
Or use list comprehension
:
load['Encoded_Column'] = [encode('password',x) for x inload['F']]
load['Decoded_Column'] = [decode('password', x) for x inload['Encoded_Column']]
print (load)
A B C D E F Encoded_Column Decoded_Column
0 a 4715 a w5E= a
1 b 5833 a w5E= a
2 c 4956 a w5E= a
3 d 5449 b w5I= b
4 e 5222 b w5I= b
5 f 4004 b w5I= b
Solution 2:
import pandas as pd
import binascii
load = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,0],
'D':[1,3,5,4,2,0],
'E':[5,3,6,9,2,4],
'F':[binascii.hexlify(x.encode()) for x in'aaabbb']
})
A B C D E F
0 a 4715 b'61'1 b 5833 b'61'2 c 4956 b'61'3 d 5449 b'62'4 e 5222 b'62'5 f 4004 b'62'
# decode
binascii.unhexlify(load.loc[1]['F']).decode('utf-8') -->> 'a'
example
print(binascii.hexlify('HelloWorld'.encode())) --> b'48656c6c6f576f726c64'print(binascii.unhexlify('48656c6c6f576f726c64'.encode())) --> b'HelloWorld'
Post a Comment for "How To Encode And Decode A Column In Python Pandas?"