Python pandas如何删除未命名列及Name列含'app'的行
可直接落地的实现代码
需求拆解对应操作
- 删除所有未命名列
pandas读取外部文件自动生成的未命名列,列名一般以Unnamed开头(你的示例里拼写为Unamed),可以通过列名筛选的方式批量删除,不需要手动指定列名:
# 正则匹配所有以Unnamed开头的列(忽略大小写),反向保留需要的列 df = df.loc[:, ~df.columns.str.contains("^Unnamed", case=False)] # 如果列名就是固定的'Unamed',也可以直接用drop删除 # df = df.drop(columns=["Unamed"])
- 移除Name列包含'app'的行
你之前编写的代码片段有两个核心问题:- 匹配逻辑错误:用
df['Name'] == 'app'是精确值匹配,只能筛出Name完全等于'app'的行,无法匹配app23这类包含'app'的内容 - 语法不完整:drop的方法括号没有闭合,运行会直接触发语法报错
- 匹配逻辑错误:用
修正后的写法有两种常用形式:
# 写法1:反向筛选不包含'app'的行,代码更简洁 df = df.loc[~df['Name'].str.contains("app", case=False)] # 写法2:沿用你原本的drop思路,修正匹配逻辑和语法 df = df.drop(df.index[df['Name'].str.contains("app")])
最终输出结果
代码执行完成后,得到的数据集和你预期结构完全一致:
ID Name 1 b db23 2 c db233
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

