如何移除pandas DataFrame.str.contains返回结果的行索引
pandas打印筛选结果时隐藏行索引的解决方法
问题说明
使用pandas的str.contains()方法筛选匹配子串的行时,返回的DataFrame打印时默认会携带原始行号索引,仅需要在打印环节隐藏该索引,不需要改动DataFrame本身结构。
复现代码
import pandas as pd df = pd.DataFrame({'Name': ['Jordan', 'Pippen', 'Rodman'], 'Number': [23, 33, 91]}) data = df[df['Name'].str.contains('Pip', case=False, regex=False)] print(data)
实际带索引的输出
Name Number 1 Pippen 33
期望无索引的输出
Name Number Pippen 33
已测试无效的方案
data.style.hide(axis='index')data.style.hide_index()data = data.reset_index(drop=True)
解决方法
普通脚本环境下直接打印时,调用DataFrame的to_string()方法,传入index=False参数即可关闭索引展示:
print(data.to_string(index=False))
执行后即可得到预期的无索引输出。
之前方案无效的原因
.style相关的方法是为Jupyter Notebook/Lab这类支持富文本渲染的环境设计的,直接在普通终端用print打印Styler对象不会生效,无法触发样式渲染reset_index(drop=True)只是把原有的非连续行索引替换为从0开始的连续索引,并没有关闭索引展示,打印时还是会带出索引列,只是索引值变成了0而已。
如果是在Jupyter类富文本环境下使用,不需要套print,直接在单元格最后一行写data.style.hide(axis='index'),运行后就能渲染出不带索引的表格。
内容的提问来源于stack exchange,提问作者tphilip02
相关产品推荐
相关产品推荐

