您的位置: 网站首页> 大家问> 当前文章
ValueError: Can only compare identically-labeled Series objects
老董2022-04-30160围观,102赞
有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文章写得不错,值得赞赏


