pandas 数据框集合中的字符串,但不在 pandas 数据框的选定列中
String in set of pandas dataframe but not in selected column of pandas dataframe
我有一个数据框,其中一列具有统一的字符串数据类型,对于特定的字符串,我想检查它是否在该列中。我发现简单的比较给出了 'False',但在检查数据框本身后,我验证了特定的字符串确实在该列中。另一方面,如果我将选定的列转换为一个集合,我会得到预期的行为。
>>> 'string' in df['col_name']
False
>>> 'string' in set(df['col_name'])
True
- 为什么 pandas 数据帧有这种行为?
- 检查对象是否在 pandas 数据框列中的常规方法是什么?
您需要将 df['col_name']
转换为值列表。目前,它是一个 series
对象。
尝试'string' in df['col_name'].values
。
'string' in df['col_name']
正在搜索系列 index
'string' in df['col_name']
被翻译成 df['col_name'].__contains__('string')
。 Series.__contains__
方法将检查系列索引,而不是值。
以下是lib\site-packages\pandas\core\generic.py
系列__contains__
的实现
def __contains__(self, key):
"""True if the key is in the info axis"""
return key in self._info_axis
信息轴是索引。
您需要对系列的 ndarray 值使用 in
。
我有一个数据框,其中一列具有统一的字符串数据类型,对于特定的字符串,我想检查它是否在该列中。我发现简单的比较给出了 'False',但在检查数据框本身后,我验证了特定的字符串确实在该列中。另一方面,如果我将选定的列转换为一个集合,我会得到预期的行为。
>>> 'string' in df['col_name']
False
>>> 'string' in set(df['col_name'])
True
- 为什么 pandas 数据帧有这种行为?
- 检查对象是否在 pandas 数据框列中的常规方法是什么?
您需要将 df['col_name']
转换为值列表。目前,它是一个 series
对象。
尝试'string' in df['col_name'].values
。
'string' in df['col_name']
正在搜索系列 index
'string' in df['col_name']
被翻译成 df['col_name'].__contains__('string')
。 Series.__contains__
方法将检查系列索引,而不是值。
以下是lib\site-packages\pandas\core\generic.py
__contains__
的实现
def __contains__(self, key): """True if the key is in the info axis""" return key in self._info_axis
信息轴是索引。
您需要对系列的 ndarray 值使用 in
。