您的位置: 网站首页> 大家问> 当前文章

ValueError: Can only compare identically-labeled Series objects

老董2022-04-30158围观,106赞

  有2个Series 具有相同的行数,想比较他们的值,结果报错ValueError: Can only compare identically-labeled Series objects。从英文字面意思来看是说只能比较拥有相同标签的Series,细看之下,确实是因为2个Series的索引标签不同。我们用例子来复现下这个错误。

# -*- coding:UTF-8 -*-
import pandas as pd   

s1 = pd.Series([1,2,3,4])
s2 = pd.Series([1,2,3,4],index=['a','b','c','d'])
s3 = pd.Series([7,8,9,10])
print(s1==s3)
print('---------')
print(s1==s2)
0    False
1    False
2    False
3    False
dtype: bool
---------
raise ValueError("Can only compare identically-labeled Series objects")
ValueError: Can only compare identically-labeled Series objects

  解决这个问题,可以有2种办法,1种是直接比较他们的值,另外一种是先把索引重置为相同之后再比较。

  1、利用values属性直接比较值

# -*- coding:UTF-8 -*-
import pandas as pd   

s1 = pd.Series([1,2,3,4])
s2 = pd.Series([1,2,3,4],index=['a','b','c','d'])
print(s1.values == s2.values)
[ True  True  True  True]

  2、重置索引使得索引一致后再比较

# -*- coding:UTF-8 -*-
import pandas as pd   

s1 = pd.Series([1,2,3,4])
s2 = pd.Series([1,2,3,4],index=['a','b','c','d'])
s1 = s1.reset_index(drop=True)
s2 = s2.reset_index(drop=True)
print(s1==s2)
0    True
1    True
2    True
3    True
dtype: bool

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会

文章评论

    ValueError: Can only compare identically-labeled Series objects文章写得不错,值得赞赏

站点信息

  • 网站程序:Laravel
  • 客服微信:a772483200