索引在系列相等性中起作用,我想运行一个忽略索引的检查,只考虑值,同时也处理不同长度的情况。
pandas.Series.equals
处理不同长度的部分,但也强加了索引等式约束。为了解决这个问题,我正在做以下事情......
def isEqualValues( s1 , s2 ) :
return s1.reset_index(drop=True).equals( s2.reset_index(drop=True) )
到目前为止这很有效,
>>> import pandas
>>> s_a = pandas.Series([1,2,3])
>>> s_b = pandas.Series([1,2,3], index=[10,11,12] )
>>> s_c = pandas.Series([1,2])
>>>
>>> print( isEqualValues( s_a , s_b ) )
True
>>> print( s_a.equals( s_b ) )
False
>>> print( isEqualValues( s_a , s_c ) )
False
>>> print( s_a.equals( s_c ) )
False
有没有官方方法在大熊猫本身进行此操作而不诉诸指数重置?
答案 0 :(得分:1)
如果您正在处理数字数据并想要处理NaN,请使用np.allclose
:
np.allclose(s_a, s_b, equal_nan=True)
如果要比较的系列的长度不相同,则会引发ValueError
。要处理此问题,请添加一个预长度检查:
len(s_a) == len(s_b) and np.allclose(s_a, s_b, equal_nan=True)
答案 1 :(得分:0)
怎么样?
(s_a.values == s_b.values).all()