【问题标题】:Check if string-sliced characters in Pandas column contain another string检查 Pandas 列中的字符串切片字符是否包含另一个字符串
【发布时间】:2021-10-27 18:28:31
【问题描述】:

所以我试图获取 Pandas 列中包含的字符串的字符 0:8 并检查该列是否包含给定值。使用此代码:

def findCourse(url, course):
    df = pd.read_html(url, flavor="html5lib")[0]
    # this gets csci 141 and 141L (BUG)
    return df.loc[df['COURSE ID'].str[0:8].contains(course)]

我收到此错误(因为 .str 转换为系列,因此我们无法调用 .contains):

Traceback (most recent call last):
  File "C:\Projects\wm-scheduler\scheduleGenerator.py", line 52, in <module>
    findEveryCourse()
  File "C:\Projects\wm-scheduler\scheduleGenerator.py", line 17, in findEveryCourse
    df = findCourse(url, course)
  File "C:\Projects\wm-scheduler\scheduleGenerator.py", line 36, in findCourse
    return df.loc[df['COURSE ID'].str[0:8].contains(course)]
  File "C:\Users\jbcal\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\generic.py", line 5487, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'contains'

我怎样才能解决这个问题?

【问题讨论】:

    标签: python pandas string


    【解决方案1】:

    .str 访问器上的切片返回一个系列,它没有 contains 方法。为了在其上调用contains 方法,您应该在之后链接另一个.str 访问器。即df['COURSE ID'].str[0:8].str.contains(course)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 2021-05-06
      • 1970-01-01
      相关资源
      最近更新 更多