You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不升级Pandas时,如何测试顺序不同但元素一致的Series是否相等?

解决方法

在不升级Pandas的前提下,你可以用以下几种方式验证两个元素一致但顺序不同的Series:

方法1:排序后断言相等

对两个Series分别排序,再使用pd.testing.assert_series_equal进行断言,就能忽略原始顺序的差异:

import pandas as pd
import numpy as np

data1 = np.array(['1','2','3','4','5','6'])
data2 = np.array(['6','2','4','3','1','5'])
sr1 = pd.Series(data1)
sr2 = pd.Series(data2)

# 排序后执行断言
pd.testing.assert_series_equal(sr1.sort_values(), sr2.sort_values(), check_names=False)

方法2:验证值的频率分布一致

如果Series中存在重复元素,验证每个元素的出现次数是否一致会更严谨。可以用value_counts()生成元素频率统计的Series,再断言这两个统计结果相等:

# 验证元素的计数分布完全一致
pd.testing.assert_series_equal(
    sr1.value_counts().sort_index(), 
    sr2.value_counts().sort_index(), 
    check_names=False
)

这里加上sort_index()是为了确保统计结果的顺序一致,避免value_counts的输出顺序差异导致断言失败。

方法3:转换为集合(仅适用于无重复元素的场景)

如果你的Series中没有重复元素,可以直接将两个Series转换为集合后断言相等:

assert set(sr1) == set(sr2)

注意:如果存在重复元素,集合会自动去重,这种方法会误判,因此仅适合元素唯一的场景。

内容的提问来源于stack exchange,提问作者the phoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:35:28