如何找出一个pandas series中与另一个series不同的值?

4
给定两个pandas系列,如何找到一个系列中有而另一个没有的元素?每个系列中的所有元素都是唯一的。
例如,考虑以下代码:
a = pd.Series([1,2,3,4])
b = pd.Series([3,2,4])

我该如何确定哪些元素在Series 'a'中而不在Series 'b'中?在这个例子中,输出结果将是[1]。

请花些时间阅读此帖子,了解如何提供出色的pandas示例(https://dev59.com/O2Ij5IYBdhLWcg3wk182),以及如何提供“最小,完整和可验证的示例”(http://stackoverflow.com/help/mcve),并相应地修改您的问题。 - anky
1
你需要 series1[series1.isin(series2)] 吗? - anky
3个回答

6
你是想问什么是唯一值吗?例如,如果你有:

a = pd.series([1,1,1,2])
b = pd.series([1,3]) 

输出应该是 [1] 或者 [1,1,1]?
如果是 [1],您可以使用:
set(a) - set(b)

2
set(a) - set(b)

猜测这应该有所帮助。

1
如果你想使用Pandas函数来解决这个问题,那么可以使用以下方法:
a[~ a.isin(b)]

解释上述表达式`.isin`是一个序列方法,它返回一系列的True-False。`a.isin(b)`表示对于存在于`b`中的`a`的值,返回`True`。而`~`是一个操作符,它反转每个位。因此,`True`变为`False`,反之亦然。因此,我们得到了存在于`a`但不存在于`b`中的布尔值。
我们可以将这些布尔值传递给`a`以获取`True`的值。
更多详细信息,请查阅官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.isin.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接