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

如何在Pandas的unique()方法中传入变量作为列名

问题解决说明

错误原因

报错是因为Pandas的DataFrame点属性访问方式不会解析变量值,你写master_data.splitName的时候,Pandas会直接查找名为splitName的列,而不会读取splitName变量存储的ProductCategoryName列名,所以才会报属性不存在的错误。

修复方案

完全可以用unique()实现需求,只需要把列访问方式换成方括号语法即可,方括号内可以传入变量作为列名。

修正后的核心代码

import pandas as pd

fn = 'PriceStats.xlsx' # 待拆分的文件名
splitName = 'ProductCategoryName' # 存储列名的变量
master_data = pd.read_excel(fn)
# 用方括号访问列,支持传入变量,再调用unique()获取唯一值
cert_types = master_data[splitName].unique()

完整拆分到不同工作表的代码

你可以用以下代码直接实现按唯一值拆分到同一个Excel不同工作表的需求:

import pandas as pd

def split_excel_by_column(input_file: str, split_col: str, output_file: str = "split_result.xlsx"):
    # 读取原始Excel
    df = pd.read_excel(input_file)
    # 获取拆分列的唯一值
    unique_vals = df[split_col].unique()
    
    # 写入到不同工作表
    with pd.ExcelWriter(output_file) as writer:
        for val in unique_vals:
            # 筛选对应值的行
            split_df = df[df[split_col] == val]
            # 工作表名称不能有特殊字符且最多31个字符,可按需调整命名规则
            sheet_name = str(val)[:30]
            split_df.to_excel(writer, sheet_name=sheet_name, index=False)

# 调用示例
split_excel_by_column(
    input_file = 'PriceStats.xlsx',
    split_col = 'ProductCategoryName'
)

额外说明

  • 方括号df[列名变量]是Pandas推荐的动态列访问方式,点属性访问仅适合列名固定、且不含特殊字符/空格的场景使用
  • 如果拆分后的工作表名称有特殊字符(如/、\、?等),可以在写入前做字符替换避免报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:15:03