如何删除Pandas DataFrame中含指定子串的行并导出结果?
解决方法:筛选并移除指定行,同时保存被删除的行
你已经找对了筛选目标行的方向,接下来只需要用布尔索引的取反操作就能得到保留的原数据,然后分别保存两个文件就好啦,具体步骤和代码如下:
1. 完善筛选条件(可选但推荐)
首先,你的筛选逻辑是正确的,但如果Name列存在空值(NaN),str.contains会返回NaN,可能导致意外的结果,建议加上na=False参数,把空值排除在匹配结果外:
# 筛选出需要删除的行 df_to_delete = df2[df2['Name'].str.contains("planning|Test|tgt", case=False, na=False)]
2. 从原DataFrame中移除目标行
有两种高效的方式可以实现:
- 方式一:用
~符号对布尔索引取反,直接得到不需要删除的行:
df2_processed = df2[~df2['Name'].str.contains("planning|Test|tgt", case=False, na=False)]
- 方式二:复用之前的筛选结果,通过索引删除行,避免重复计算:
df2_processed = df2.drop(df_to_delete.index)
3. 分别保存到CSV文件
最后把两个DataFrame分别保存到对应的CSV文件即可,index=False可以避免把DataFrame的索引列写入CSV,你可以根据需求调整:
# 保存被删除的行到CSV df_to_delete.to_csv("deleted_rows.csv", index=False) # 保存处理后的原数据到CSV df2_processed.to_csv("processed_df2.csv", index=False)
如果遇到空值处理、特殊匹配规则这类细节问题,随时可以再探讨!
内容的提问来源于stack exchange,提问作者Eithar
相关产品推荐
相关产品推荐

