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

如何将DataFrame多列的value_counts结果全部写入CSV文件?

解决方法

你的问题出在循环里每次都用df2 = df[col].value_counts()覆盖之前的结果,最后只保留了最后一列的统计数据。要把所有列的结果都写入CSV,需要先收集每列的统计结果,再合并成一个完整的DataFrame后保存。

这里提供两种实用的方案:

方案一:循环收集结果(直观易理解)

这种方式适合新手,步骤清晰,容易调试:

import pandas as pd

df = pd.read_csv("hcp.csv")
count_results = []

for col in df.columns:
    # 对当前列做值统计,重置索引并设置列名
    col_stats = df[col].value_counts().reset_index()
    col_stats.columns = ["取值", "出现次数"]
    # 添加一列标记当前统计的是哪一列
    col_stats["列名"] = col
    # 将当前列的统计结果加入列表
    count_results.append(col_stats)

# 合并所有列的统计结果
final_df = pd.concat(count_results, ignore_index=True)
# 写入CSV,去掉默认索引
final_df.to_csv("new_hcp.csv", index=False)

方案二:用apply简化代码(更简洁)

如果熟悉pandas的apply方法,可以用更简洁的方式完成:

import pandas as pd

df = pd.read_csv("hcp.csv")
# 对每列应用value_counts,堆叠后重置索引并设置列名
final_df = df.apply(pd.Series.value_counts).stack().reset_index()
final_df.columns = ["取值", "列名", "出现次数"]
# 保存到CSV
final_df.to_csv("new_hcp.csv", index=False)

两种方案都会生成包含所有列统计结果的CSV,每行对应某一列的某个取值及其出现次数,方便后续分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:36:38