Ersteinfuhr:Hashing Pandas Datenrahmen bricht
import pandas as pd
import numpy as np
import hashlib
Als nächstes sollten Sie Folgendes berücksichtigen:
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())
Mehrere Ausführungen dieses Schnipsel liefern den gleichen Hash zweimal die ganze Zeit: ddfee4572d380bef86d3ebe3cb7bfa7c68b7744f55f67f4e1ca5f6872c2c9ba1
.
Wenn wir jedoch die folgenden Punkte beachten:
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())
Hinweis, dass es Strings in den Daten jetzt. Der Hash der arr
ist fest (52db9328682317c44370b8186a5c6bae75f2a94c9d0d5b24d61f602857acd3de
) für verschiedene Auswertungen, aber der eine der pandas.DataFrame
ändert sich jedes Mal.
Irgendein pythonischer Weg um ihn herum? Kein Python?
Edit: Links zum Thema:
[Blog post Zusammenfassung] (http://drorata.github.io/posts/2017/May/26/when-trying-to-hash-a-data-frame/) – Dror