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

Python Pandas:统一DataFrame列选项排序并补全缺失选项求助

解决方案

原代码的问题在于value_counts()默认只返回当前列中实际出现的选项,且按计数降序排列,所以会出现排序混乱、缺失指定选项的情况。要实现统一排序并补全缺失项,你可以通过预定义目标选项顺序+索引对齐的方式解决:

修改后的代码

import pandas as pd

# 定义统一的选项顺序,按你需要的yes、no、Don't know排列
desired_order = ['yes', 'no', "Don't know"]
li = []

# 直接遍历列名,比用range更直观
for col in df.columns:
    # 获取列的统计结果,用reindex对齐到目标顺序,缺失项填充0
    vc = df[col].value_counts(dropna=False).reindex(desired_order, fill_value=0)
    # 转换为DataFrame并重置索引,重命名列名让结果更清晰
    vc_df = vc.to_frame().reset_index()
    vc_df.columns = ['选项', col]  # 列名可根据需求修改
    li.append(vc_df)

关键步骤说明

  • desired_order:固定所有列的输出顺序,确保每列严格按照yes→no→Don't know排列
  • reindex(desired_order, fill_value=0):核心操作,将统计结果的索引强制对齐到目标顺序,原列中不存在的选项会自动添加,计数填充为0
  • dropna=False:如果数据里有NaN值,这个参数会把NaN也统计进去;不需要统计NaN的话可以去掉该参数

可选:合并所有统计结果为一个DataFrame

如果想把列表里的多个小DataFrame合并成统一的统计表格,可使用pd.concat:

final_stats = pd.concat([df.set_index('选项') for df in li], axis=1).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:01:16