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

如何统计多列唯一值及对应行数并优化CSV导出格式?

简化多列唯一值统计及导出流程

针对你处理136列数据、统计每列唯一值及对应行数的需求,完全可以用Pandas内置方法大幅简化流程,同时解决导出CSV时唯一值以列表存储在单个单元格的问题,以下是优化方案:

核心优化思路

直接利用Pandas的value_counts()(统计每个唯一值的出现次数)和nunique()(统计每列唯一值总数)方法,替代手动遍历和判断,既高效又避免逻辑错误。

完整实现代码

1. 导出每列所有唯一值及对应行数(每行一个唯一值)

这个方案会把每列的每个唯一值-计数对拆成单独行,导出后CSV结构更清晰,不会出现列表嵌套在单元格的情况:

import pandas as pd

# 读取Excel文件
df = pd.read_excel(filename)

# 收集每列的唯一值及计数
result_rows = []
for col_name in df.columns:
    # 统计当前列的唯一值出现次数,自动排除NaN
    value_count = df[col_name].value_counts(dropna=True)
    # 把每个唯一值和计数整理成字典,加入结果列表
    for unique_val, count in value_count.items():
        result_rows.append({
            'Data Source Field': col_name,
            'Unique Value': unique_val,
            'Count': count
        })

# 转成DataFrame并导出CSV
result_df = pd.DataFrame(result_rows)
result_df.to_csv('unique_values_with_counts.csv', index=False)

2. 导出每列的唯一值总数(仅统计不重复值的数量)

如果只需要每列有多少个非空唯一值,用以下代码一键生成:

# 统计每列的非空唯一值数量
unique_count_df = df.nunique(dropna=True).reset_index()
unique_count_df.columns = ['Data Source Field', 'Unique Value Count']
unique_count_df.to_csv('unique_count_per_column.csv', index=False)

原代码存在的问题说明

  1. NaN判断错误:用entry == 'nan'或entry == 'NaN'无法识别Pandas中的NaN(NaN是float类型的特殊值),正确判断非空值应该用pd.notna(entry)。
  2. 逻辑错误:原代码中if not entry =='nan' or not entry == 'NaN'的逻辑会导致所有值都被计数(or的逻辑只要一个条件成立就执行),应该改为and,但更推荐用内置方法自动处理空值。
  3. 效率低下:手动遍历去重、存列表的方式,远不如Pandas的向量化内置方法高效,尤其面对136列的大数据量时,差距会很明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:10:28