求两个pandas.Series的交/并集

本文介绍如何使用Python的Pandas库进行数据系列的交集与并集运算。通过具体实例展示了如何利用set方法来获取两个数据系列之间的交集与并集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

名称功能
intersection交集
union并集

代码演示

>>> import pandas as pd
>>> s1 = pd.Series([4,5,6,20,42])
>>> s2 = pd.Series([1,2,3,5,42])
# 求交集 #
>>> pd.Series(list(set(s1).intersection(set(s2))))
0    42
1     5
dtype: int64

# 求并集 #
>>> pd.Series(list(set(s1).union(set(s2))))
0     1
1     2
2     3
3     4
4     5
5     6
6    42
7    20
dtype: int64
参考资料
### 使用 Pandas 计算的方法 #### 对于 Series 当需要计算两个 `pandas.Series` 的时,可以通过将其转换为合(set),再利用 Python 合的内置函数来实现。以下是具体代码示例: ```python import pandas as pd # 创建两个示例 Series s1 = pd.Series(['A', 'B', 'C']) s2 = pd.Series(['B', 'C', 'D']) # 转换为 union_set = set(s1).union(set(s2)) # 将结果重新转换为 Series result_series = pd.Series(list(union_set)) print(result_series) ``` 上述方法通过将 `Series` 数据结构转化为合后调用 `.union()` 函数完成运算[^4]。 #### 对于 DataFrame 列的 对于两个 `DataFrame` 中特定列的操作,可以采用类似的逻辑。例如: ```python import pandas as pd # 创建两个示例 DataFrame df1 = pd.DataFrame({'col': ['A', 'B', 'C']}) df2 = pd.DataFrame({'col': ['B', 'C', 'D']}) # 提取对应列转为 union_set = set(df1['col']).union(set(df2['col'])) # 结果存储到新列表或 Series result_list = list(union_set) result_series = pd.Series(result_list) print(result_series) ``` 此方式适用于提取单个列的数据进行运算。 #### 合多个 Series 或 DataFrame 行记录作为 如果目标是合两个 `DataFrame` 或者 `Series` 所有行记录形成一个新的整体数据,则可以直接使用 `pd.concat()` 方法,设置参数 `ignore_index=True` 来重置索引。如下所示: ```python import pandas as pd # 定义两个 Series s1 = pd.Series([1, 2, 3]) s2 = pd.Series([4, 5]) # 垂直拼接 (axis=0 默认值),得到新的 Series combined_s = pd.concat([s1, s2], ignore_index=True) print(combined_s) # 如果是 DataFrame 可以同样操作 df1 = pd.DataFrame({'A': [1, 2]}) df2 = pd.DataFrame({'A': [3, 4]}) combined_df = pd.concat([df1, df2], ignore_index=True) print(combined_df) ``` 这里需要注意的是,默认情况下 `concat` 是按照行方向堆叠(即轴向为 0)。这相当于实现了两个序列或者表之间所有元素无重复保留下的联合效果[^2]。 另外,在某些场景下可能还需要考虑去重问题,此时可以在最终结果上应用 `.drop_duplicates()` 方法进一步优化输出。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值