您的位置: 网站首页> 大家问> 当前文章
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。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
文章评论
-
ValueError: Can only compare identically-labeled Series objects文章写得不错,值得赞赏