使用apply散列熊猫数据框列的每一行

时间:2018-07-04 18:01:40

标签: python-3.x pandas dataframe hash apply

我正在尝试对数据框列ORIG使用以下算法对python 3.6 pandas数据框列的每个值进行哈希处理:

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 :(得分:2)

您可以创建一个命名函数并应用它-或应用一个lambda函数。无论哪种情况,都应对数据帧进行尽可能多的处理。

基于lambda的解决方案:

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)