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

如何获取DataFrame列的唯一值并筛选CODE列含多值的Excel文件

问题解决方案

报错原因

你遇到的AttributeError: 'tuple' object has no attribute 'append'由两个问题共同导致:

  • Pandas 2.0及以上版本已正式移除DataFrame.append()方法,调用该方法不会返回预期的拼接后DataFrame,会返回异常类型对象
  • 原代码逻辑是将所有Excel数据合并为一个大DataFrame,不符合你需要保留「符合条件的单个文件对应DataFrame」的需求

正确实现代码

你可以直接用以下代码实现需求,最终target_dfs就是所有CODE列含2个及以上唯一值的DataFrame列表:

import os
import pandas as pd

path = "/path/to/file/"
files = os.listdir(path)
# 筛选xls文件,兼容大小写后缀
files_xls = [os.path.join(path, f) for f in files if f.lower().endswith('xls')]

# 初始化结果列表:存储符合条件的单个DataFrame
target_dfs = []
# 可选:初始化文件对应关系表,记录符合条件的文件路径和对应的CODE唯一值
station_info = []

for file_path in files_xls:
    # 读取单个Excel文件
    data = pd.read_excel(file_path, 'Sheet 1', converters={'CODE': str})
    # 统计CODE列唯一值数量
    unique_code_count = data['CODE'].nunique()
    # 符合条件则加入结果列表
    if unique_code_count >= 2:
        target_dfs.append(data)
        # 可选:记录文件信息
        station_info.append({
            "FILE": file_path,
            "UNIQUE_CODE": data['CODE'].unique().tolist()
        })

# 可选:将文件信息转为DataFrame方便查看
station_info_df = pd.DataFrame(station_info)

代码说明

  • 用nunique()方法直接统计列的唯一值数量,比drop_duplicates()更高效简洁
  • 最终target_dfs的每个元素对应一个符合要求的Excel文件的DataFrame,你可以按索引取用
  • 新增的station_info_df可以快速查看每个符合条件的文件对应的CODE值,不需要可以删除相关代码

内容的提问来源于stack exchange,提问作者Javier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:09:03