熊猫数据框中的字符串,但不在熊猫数据框中的选定列中

时间:2019-09-25 17:43:26

标签: python python-3.x string pandas python-3.6

我有一个数据框,其中的一列具有统一的字符串数据类型,对于特定的字符串,我想检查它是否在该列中。我发现简单的比较结果为“ False”,但是在检查了数据框本身之后,我验证了该列中确实包含特定的字符串。另一方面,如果将选定的列转换为集合,则会得到预期的行为。

>>> 'string' in df['col_name']
False
>>> 'string' in set(df['col_name'])
True
  1. 为什么熊猫数据框具有这种行为?
  2. 检查对象是否在pandas数据框列中是一种常规方法吗?

2 个答案:

答案 0 :(得分:4)

您需要将df['col_name']转换为值列表。当前,它是一个series对象。

尝试'string' in df['col_name'].values

'string' in df['col_name']正在搜索系列的index

答案 1 :(得分:0)

'string' in df['col_name']被翻译为df['col_name'].__contains__('string')Series.__contains__方法将检查序列索引,而不是值。

下面是__contains__中系列lib\site-packages\pandas\core\generic.py的实现

def __contains__(self, key):
    """True if the key is in the info axis"""
    return key in self._info_axis

信息轴是索引。


您需要在系列的ndarray值上使用in