获取两个Pandas系列中不常见的项目,可以使用isin()
和~
运算符来实现。具体步骤如下:
- 使用
isin()
方法获取第一个系列中不包含在第二个系列中的元素。
import pandas as pd
serie1 = pd.Series([1, 2, 3, 4, 5])
serie2 = pd.Series([3, 4, 5, 6, 7])
result = serie1[~serie1.isin(serie2)]
print(result)
输出结果:
0 1
1 2
dtype: int64
结果中只有第一个序列中不包含在第二个序列中的元素1和2,符合预期。
- 同时获取两个系列中互不相同的元素,可以执行两次
isin()
操作,将结果按位取反后合并。
import pandas as pd
serie1 = pd.Series([1, 2, 3, 4, 5])
serie2 = pd.Series([3, 4, 5, 6, 7])
result = serie1[~serie1.isin(serie2)].append(serie2[~serie2.isin(serie1)])
print(result)
输出结果:
0 1
1 2
3 6
4 7
dtype: int64
结果中包含了第一个序列中不包含在第二个序列中的元素1和2,以及第二个序列中不包含在第一个序列中的元素6和7,符合预期。
- 当系列中存在缺失值时,可以使用
dropna()
方法去除缺失值后再执行isin()
操作,避免出现错误的结果。
import pandas as pd
import numpy as np
serie1 = pd.Series([1, 2, 3, np.nan, 5])
serie2 = pd.Series([3, np.nan, 5, 6, 7])
non_missing_serie1 = serie1.dropna()
non_missing_serie2 = serie2.dropna()
result = non_missing_serie1[~non_missing_serie1.isin(non_missing_serie2)].append(non_missing_serie2[~non_missing_serie2.isin(non_missing_serie1)])
print(result)
输出结果:
0 1.0
1 2.0
3 6.0
4 7.0
dtype: float64
结果中将缺失值去除后再进行操作,避免出现错误结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:获取两个Pandas系列中不常见的项目 - Python技术站