You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅对DataFrame行值哈希,消除列名差异的影响?

解决方案

要实现仅基于行值生成哈希、完全排除列名影响的需求,你可以直接提取每行的原始值集合进行哈希,避开对列名相关属性的依赖。以下是几种可靠的实现方式:

方法1:使用apply提取行值

直接通过row.values获取行的原始值数组,转成元组后计算哈希:

df['hash'] = df_to_hash.apply(lambda row: hash(tuple(row.values)), axis=1)

方法2:用itertuples提升效率

iterrows和apply在处理大数据量时性能较差,itertuples返回命名元组,跳过索引后直接取行值计算哈希:

df['hash'] = pd.Series(hash(tuple(row[1:])) for row in df_to_hash.itertuples())

方法3:转numpy数组批量处理

将DataFrame转为二维numpy数组,遍历每行生成哈希,是性能最优的方式:

df['hash'] = [hash(tuple(row)) for row in df_to_hash.to_numpy()]

扩展:不考虑列顺序的情况

如果需要忽略列的顺序(只要行内值的集合相同就生成相同哈希),可以先对行值排序再计算:

df['hash'] = df_to_hash.apply(lambda row: hash(tuple(sorted(row.values))), axis=1)

验证效果

针对你给出的DF1和DF2示例,使用上述任意一种方法后,两行的哈希值都会分别一致——完全不受Name/FirstName这类列名差异的影响。

内容的提问来源于stack exchange,提问作者nimgwfc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:15:35