Хэшируйте каждую строку столбца данных в пандах, используя команду apply - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь хэшировать каждое значение столбца данных Python 3.6 с помощью следующего алгоритма в столбце данных ORG:

HK_ORIG = base64.b64encode(hashlib.sha1(str(df.ORIG).encode("UTF-8")).digest())

Однако вышеупомянутый код не хэширует каждое значение столбца, поэтому, чтобы хэшировать каждое значение df-столбца ORIG, мне нужно использовать функцию apply. К сожалению, я, кажется, не достаточно хорош, чтобы сделать это.

Я думаю, что это выглядит следующим образом:

df["HK_ORIG"] = str(df['ORIG']).encode("UTF-8")).apply(hashlib.sha1)

Я с нетерпением жду ваших ответов! Большое спасибо заранее!

1 Ответ

0 голосов
/ 05 июля 2018

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

Лямбда-решение:

df['ORIG'].astype(str).str.encode('UTF-8')\
          .apply(lambda x: base64.b64encode(hashlib.sha1(x).digest()))

Решение с именованной функцией:

def hashme(x):
    return base64.b64encode(hashlib.sha1(x).digest())
df['ORIG'].astype(str).str.encode('UTF-8')\
          .apply(hashme)
...