【问题标题】:String in set of pandas dataframe but not in selected column of pandas dataframe熊猫数据框中的字符串但不在熊猫数据框的选定列中
【发布时间】:2019-09-25 17:43:26
【问题描述】:

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

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

【问题讨论】:

  • 您能否提供df['col_name'] 中返回此行为的数据样本?

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    '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

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2015-05-18
      • 1970-01-01
      • 2020-06-03
      • 2018-04-26
      • 2018-08-01
      • 2021-09-07
      • 2019-02-12
      相关资源
      最近更新 更多