python - 从 Pandas 数据帧索引中过滤包含字符串模式的行

标签 python pandas

我需要从 Pandas 数据帧索引中过滤包含字符串模式的行。

我找到了以下示例:How to filter rows containing a string pattern from a Pandas dataframe其中使用 df[df["col"].str.contains()] 过滤数据帧,这在示例中效果很好。

df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']})

在示例中,如果我将“ids”列复制到索引,我可以使用 df.index.str.contains("ball"),这也能正常工作。

但是,当我在我的数据框中使用 df.index.str.contains("Example") 时,它不起作用。

我认为它不起作用,因为在我的数据框中返回的值不是 array([ True, False ... , True], dtype=bool),而是一个Index([True, False ... , True], dtype='object', length = 667)

如何重新编写我的代码以使其正常工作?

我没有粘贴我的数据框,因为我是从一个大的 Excel 表中读取它的。

谢谢!

最佳答案

你应该确保你的索引是一个字符串。下面的示例会产生错误。

# Test data
df = DataFrame([1,2,3,4], index=['foo', 'foo1', 'foo2', 1], columns=['value'])
df[df.index.str.contains('foo')]

将索引转换为str可以获得预期的结果。

df.index = df.index.astype('str')
df[df.index.str.contains('foo')]

      value
foo       1
foo1      2
foo2      3

关于python - 从 Pandas 数据帧索引中过滤包含字符串模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38943008/

相关文章:

python - 使用 BeautifulSoup 抓取包含多个表格的页面

python - 如何修复 : "UnicodeDecodeError: ' ascii' codec can't decode byte"

python - 如何有效地将 4D numpy 数组转换为以索引为列的 ​​pandas DataFrame?

python - Pandas - 反转和分配列名称不起作用

python - 将格式化字符串转换为日期时间

python - 如何使用 GCP Cloud SQL 作为数据流源和/或 Python 接收器?

python - 按变量值过滤。 .filter(**{filter_name : filter_value}) work?

python - 什么是 Python 空白,它是如何工作的?

python : Comparing values between rows and columns

python - 如何从字符串中删除小数点后的零删除点后的所有零