我有一个数据框,其中的一列具有统一的字符串数据类型,对于特定的字符串,我想检查它是否在该列中。我发现简单的比较结果为“ False”,但是在检查了数据框本身之后,我验证了该列中确实包含特定的字符串。另一方面,如果将选定的列转换为集合,则会得到预期的行为。
>>> 'string' in df['col_name']
False
>>> 'string' in set(df['col_name'])
True
答案 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
。