首页 > 解决方案 > 如何使用“字符串的切片”.isnumeric() 的条件迭代 df 列

问题描述


在一行中,我想获取 df 的行,其中一列以三位数开头。显然,它可以用不同的方法来完成(例如字符串切片,或使用 for 循环)。我想通过使用[pandas.Series.str.isnumeric] 1来做到这一点。令人惊讶的是,我得到了一个“AttributeError:'list' 对象没有属性'isnumeric'”。

这是df的必要部分:

>>> df.loc[df.title.str[0:3]=="123"].title
>>> 0       123Besiktas Modern Eşyalı 4+1 Kiralık Daire (129)
    90      123Besiktas Selenium Panorama Yeni Eşyalı 1+1 ...
    8542    123Besiktas Büyükhanlı Eşyalı Boğaz Manzaralı ...
Name: title, dtype: object

这是代码和错误:

>>> df.loc[[df.title.str[0:3]].isnumeric()]
>>> ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-71-74a315c862f9> in <module>
----> 1 df.loc[[df.title.str[0:3]].isnumeric()]

AttributeError: 'list' object has no attribute 'isnumeric'

文档说:Series.str.isnumeric
(self)相当于为 Series/Index 的每个元素运行 Python 字符串方法str.isnumeric()。如果字符串有零个字符,则为该检查返回 False。

当然 Python str.isnumeric()方法允许切片:

>>>w = "123Besiktas"
...w[0:3].isnumeric()
>>>True

但是pandas.Series.str.isnumeric()不允许切片!
事实上,它不仅与.isnumeric()有关,还与所有.isXXX( )方法有关。

所以,我的问题是:
这是 Pandas 开发人员应该注意的事情,还是我错过了什么?

提前致谢。

标签: pythonpandasloopssliceseries

解决方案


推荐阅读