为何pd.DataFrame与pd.Series用in运算符检查索引值时行为不同?
pandas中DataFrame与Series的
in运算符行为差异解释 核心原因:in运算符在不同pandas对象上的检查目标不同
- DataFrame场景:对
DataFrame使用in时,它会检查列名集合中是否包含目标值。你的示例里df的列是'a'和'b',显然1不在列名里,所以返回False。 - Series场景:对
Series使用in时,它会检查索引标签集合中是否包含目标值。你的示例里df["a"]用的是默认索引(0、1、2),1是其中一个索引标签,所以返回True。
额外说明:如何检查Series的数值是否存在
如果你的需求是检查某个值是否在Series的数据值里,而不是索引,需要明确调用values属性:
print(1 in df["a"].values) # 输出 False,因为df["a"]的数值是[4,5,6]
内容的提问来源于stack exchange,提问作者E. R.
相关产品推荐
相关产品推荐

