написать функцию, которая может конвертировать из шестнадцатеричного формата в формат ascii внутри фрейма данных pandas - PullRequest
1 голос
/ 05 октября 2019

Я пытаюсь написать функцию, которая может принимать фрейм данных (df) и столбец (col) в качестве входных данных и конвертировать из кодированного HEX в ascii в столбце.

Я пытался "7061756c".decode("hex"), но яя не уверен, что могу подать заявку на все записи в столбце col, ниже приведен код, который я пробовал

def hex_to_ascii(df , col):
    for i in range(0,len(df['col'].values)):
        string = bytearray.fromhex(df['col'].values[i]).decode()

Я застрял здесь, может кто-нибудь помочь с этим

Ответы [ 2 ]

5 голосов
/ 05 октября 2019

Похоже, вам действительно нужно использовать df.apply() с измененной версией вашей функции, если я правильно понимаю ваш фрейм данных:

def hex_to_ascii(s):
    try:
        return bytearray.fromhex(s).decode()
    except ValueError:
        return None      # or s, or some other error handling

df['col'] = ['7061756c', '6a6f686e', '72696e676f', '67656f726765', '737475', '796f6b6f']
print(df['col'].apply(hex_to_ascii))

0      paul
1      john
2     ringo
3    george
4       stu
5      yoko
Name: col, dtype: object
2 голосов
/ 05 октября 2019
In [16]: df = pd.DataFrame({"col":["a", "b", "xyz"]})

In [17]: df["encoded"] = df["col"].apply(lambda x: x.encode().hex())

In [18]: df["decoded"] = df["encoded"].str.decode("hex")

In [19]: df
Out[19]:
   col encoded decoded
0    a      61    b'a'
1    b      62    b'b'
2  xyz  78797a  b'xyz'

In [22]: df["decoded"] = df["encoded"].apply(lambda x: bytes.fromhex(x).decode())

In [23]: df
Out[23]:
   col encoded decoded
0    a      61       a
1    b      62       b
2  xyz  78797a     xyz

In [25]: df["decoded"] = df["encoded"].str.decode("hex").str.decode("utf-8")

In [26]: df
Out[26]:
   col encoded decoded
0    a      61       a
1    b      62       b
2  xyz  78797a     xyz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...