【发布时间】:2017-10-27 01:50:01
【问题描述】:
第一次导入:
import pandas as pd
import numpy as np
import hashlib
接下来,考虑以下几点:
np.random.seed(42)
arr = np.random.choice([41, 43, 42], size=(3,3))
df = pd.DataFrame(arr)
print(arr)
print(df)
print(hashlib.sha256(arr.tobytes()).hexdigest())
print(hashlib.sha256(df.values.tobytes()).hexdigest())
多次执行这个 sn-p 总是两次产生相同的哈希值:ddfee4572d380bef86d3ebe3cb7bfa7c68b7744f55f67f4e1ca5f6872c2c9ba1。
但是,如果我们考虑以下情况:
np.random.seed(42)
arr = np.random.choice(['foo', 'bar', 42], size=(3,3))
df = pd.DataFrame(arr)
print(arr)
print(df)
print(hashlib.sha256(arr.tobytes()).hexdigest())
print(hashlib.sha256(df.values.tobytes()).hexdigest())
注意现在数据中有字符串。 arr 的哈希值对于不同的评估是固定的 (52db9328682317c44370b8186a5c6bae75f2a94c9d0d5b24d61f602857acd3de),但 pandas.DataFrame 的哈希值每次都会改变。
有什么pythonic的方法吗?没有 Pythonic?
编辑:相关链接:
【问题讨论】: