You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于条件去重:Pandas数据处理及Excel导出问题求助

解决Pandas删除重复值并导出Excel的问题

需求说明

删除col1中所有出现在col2里的值,删除col2列后将结果导出到Excel表格。

初始数据

import pathlib
from pathlib import Path
import os 
import pandas as pd 

df=pd.DataFrame(
    {
        'col1': ['red','blue','red','red','green','red','yellow', 'red', 'cyan', 'purple', 'pink', 'black', 'orange'],
        'col2': ['red', 'green','orange'],
    }
)

预期输出

df=pd.DataFrame(
    {
        'col1': ['blue', 'yellow', 'cyan', 'purple', 'pink', 'black']
    }
)

错误代码问题分析

  1. 匹配逻辑错误:df[(df['col1'] == df['col2'])]是逐行对比两列值,但两列长度不一致(col1有13行、col2仅3行),触发广播机制后筛选结果完全不符合需求,应该用isin()判断col1值是否在col2的集合中。
  2. inplace用法错误:df = df.drop(['col2'], inplace=True)中,inplace=True会让drop方法返回None,直接赋值给df会导致后续操作报错。
  3. 参数位置错误:os.startfile(File_path, index=False)里的index=False是to_excel的参数,不应放在os.startfile中,且File_path未定义。

修正后的完整代码

import pathlib
from pathlib import Path
import os 
import pandas as pd 

df_output = Path.home().joinpath("Desktop", "Remaining colors.xlsx")

df=pd.DataFrame(
    {
        'col1': ['red','blue','red','red','green','red','yellow', 'red', 'cyan', 'purple', 'pink', 'black', 'orange'],
        'col2': ['red', 'green','orange'],
    }
)

# 筛选col1中不在col2里的值,仅保留col1列
df = df.loc[~df['col1'].isin(df["col2"]), ['col1']]

# 导出到Excel,不生成默认索引
df.to_excel(df_output, index=False)
# 打开导出的文件
os.startfile(df_output)

代码解释

  • ~df['col1'].isin(df["col2"]):isin()判断col1每个值是否存在于col2中,~取反得到所有不在col2中的行。
  • df.loc[..., ['col1']]:直接保留col1列,无需再单独删除col2,一步得到符合预期的数据结构。
  • to_excel(index=False):导出时不添加默认索引列,与预期输出完全匹配。

内容的提问来源于stack exchange,提问作者Jose Daniel Rojas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:10:29