首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas.Series.unique()删除唯一值

Pandas.Series.unique()删除唯一值
EN

Stack Overflow用户
提问于 2021-06-07 18:42:27
回答 1查看 69关注 0票数 0

我有1000000到99999999年间的熊猫系列。它们是序列号,所以它们经常重复。unique()函数的目的是在一个系列中删除重复项,但是请参阅下面的代码。

代码语言:javascript
运行
复制
>>> 10296765 in data.OriginatorUniqueId
True
>>> 10296765 in data.OriginatorUniqueId.unique()
False

我不知道该怎么解释,有没有一个合理的解释,为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-07 19:10:12

它是in方法的不同实现。in方法实际上是用相应对象的__contains__方法实现的。对于DataFrame,即:

代码语言:javascript
运行
复制
def __contains__(self, key) -> bool_t:
    """True if the key is in the info axis"""
    return key in self._info_axis

对于一个系列,信息轴是行索引,对于一个DataFrame,信息轴是列索引,所以您正在检查该值是否是索引标签,而不是底层numpy数组中的数据值。

另一方面,numpy.ndarray检查数组本身的值(numpy数组没有像熊猫那样的索引,那么还需要检查什么呢?)

代码语言:javascript
运行
复制
ndarray.__contains__(key, /)
    Return key in self.

下面是一个具体的例子:

代码语言:javascript
运行
复制
import pandas as pd
df = pd.DataFrame(columns=['foo'], index=['a'], data=7)
#   foo
#a    7

# DataFrame.__contains__ checks for the column labels
'foo' in df
#True

# Series.__contains__ checks for the Index labels
'a' in df['foo']
# True

# ndarray.__contains__ checks against the data in the array
7 in df.to_numpy()
# True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67877127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档