gpt4 book ai didi

Python Pandas 比较 2 个大型文本数据帧的相似性

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:34 24 4
gpt4 key购买 nike

我有两个大数据框想要比较。我想要一个能够按百分比对相似性进行列和/或行比较的比较结果。 这部分很简单。但是,我希望能够使比较忽略基于值(value)标准的差异。下面是一个小例子。

d1 = {'Sample':pd.Series([101,102,103]), 
'Col1':pd.Series(['AA','--','BB']),
'Col2':pd.Series(['AB','AA','BB'])}
d2 = {'Sample':pd.Series([101,102,103]),
'Col1':pd.Series(['BB','AB','--']),
'Col2':pd.Series(['AB','AA','AB'])}
df1 = pd.DataFrame(d1)
df2 = pd.DataFrame(d2)
df1 = df1.set_index('Sample')
df2 = df2.set_index('Sample')

comparison = df1.eq(df2)

# for column stats
comparison.sum(axis=0) / float(len(df1.index))

# for row stats
comparison.sum(axis=1) / float(len(df1.columns))

我的问题是,当 value1='AA' 和 value2 = '--' 时,我希望它们被视为相等(因此当 '--' code> 基本上总是 true)但是,否则执行正常的 bool 比较。我需要一种有效的方法来做到这一点,不包括过度循环,因为数据集非常大。

最佳答案

下面,我将解释为“当一个是'--'时基本上总是正确的”意味着与'--'的任何比较(无论什么)另一个值是)应该返回 True。在这种情况下,您可以使用

mask = (df1=='--') | (df2=='--')

查找 df1df2 等于 '--' 的每个位置,然后使用

comparison |= mask

更新比较。例如,

import itertools as IT
import numpy as np
import pandas as pd
np.random.seed(2015)

N = 10000
df1, df2 = [pd.DataFrame(
np.random.choice(map(''.join, IT.product(list('ABC'), repeat=2))+['--'],
size=(N, 2)),
columns=['Col1', 'Col2']) for i in range(2)]


comparison = df1.eq(df2)
mask = (df1=='--') | (df2=='--')
comparison |= mask

# for column stats
column_stats = comparison.sum(axis=0) / float(len(df1.index))

# for row stats
row_stats = comparison.sum(axis=1) / float(len(df1.columns))

关于Python Pandas 比较 2 个大型文本数据帧的相似性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com