如何在Python数据帧(从固定宽度文件创建)上生成哈希或校验和值?

2024-10-01 09:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有2个固定宽度的文件如下(唯一的变化是日期值从第14位开始)。在

sample_hash1.txt

GOKULKRISHNA 04/17/2018
ABCDEFGHIJKL 04/17/2018
111111111111 04/17/2018

sample_hash2.txt

^{pr2}$

使用pandas read_fwf我正在读取此文件并创建一个数据帧(通过排除只加载前13个字符的日期值)。所以我的数据帧是这样的。在

import pandas as pd
df1 = pd.read_fwf("sample_hash1.txt", colspecs=[(0,13)])
df2 = pd.read_fwf("sample_hash2.txt", colspecs=[(0,13)])

df1

   GOKULKRISHNA
0  ABCDEFGHIJKL
1  111111111111

df2

   GOKULKRISHNA
0  ABCDEFGHIJKL
1  111111111111

现在我尝试在每个数据帧上生成一个哈希值,但是哈希值不同。我不知道这是怎么回事。有人能用灯光照一下吗?我必须确定文件中的数据是否有任何变化(不包括日期列)。在

print(hash(df1.values.tostring()))
-3571422965125408226

print(hash(df2.values.tostring()))
5039867957859242153

我正在将这些文件(每个文件大约2GB大小)加载到表中。每次我们从源接收完整的文件时,有时数据没有变化(除了最后一列的日期)。所以我的想法是拒绝这些文件。因此,如果我可以在文件上生成哈希值并存储在某个地方(在表中),那么下次我可以将新的文件哈希值与存储的哈希值进行比较。所以我认为这是正确的方法。但还是坚持哈希生成。在

我查过这个帖子 Most efficient property to hash for numpy array 但这不是我要找的


Tags: 文件数据sampletxtpandasreadhashpd
1条回答
网友
1楼 · 发布于 2024-10-01 09:26:46

使用字符串表示dataframe。在

import hashlib

print(hashlib.sha256(df1.to_json().encode()).hexdigest())
print(hashlib.sha256(df2.to_json().encode()).hexdigest())

或者

^{pr2}$

相关问题 更多 >