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

如何用Pandas或Python将DataFrame列值计数转为表格格式

Pandas实现分类计数值的表格重塑

问题描述

我有一列分类计数值如下:

TNP                 42530
TNP_CONF            40689
NON_TNP              5320
NON_TNP_CONF         3520
TNP_CONF_NOT         1841
NON_TNP_CONF_NOT     1800

想要将其转换为如下表格形式:

TNP  NON_TNP
CONF      40689     3520
CONF_NOT   1841     1800
TOTAL     42530     5320

请问该如何实现?

解决方案

假设你的计数值是Pandas的Series对象(如果是字典可先转为Series),按以下步骤处理:

1. 准备数据

先将原始数据转为Series:

import pandas as pd

data = {
    'TNP': 42530,
    'TNP_CONF': 40689,
    'NON_TNP': 5320,
    'NON_TNP_CONF': 3520,
    'TNP_CONF_NOT': 1841,
    'NON_TNP_CONF_NOT': 1800
}
s = pd.Series(data)

2. 拆分索引并整理字段

把原始索引按_拆分,提取主分类(TNP/NON_TNP)和状态标签(CONF/CONF_NOT/TOTAL):

# 重置索引为列,方便处理
df = s.reset_index()
df.columns = ['category', 'count']

# 拆分category列,分成主分类和状态两部分
df[['main_cat', 'status']] = df['category'].str.split('_', n=1, expand=True)

# 给没有状态标签的行(TNP、NON_TNP)设置status为'TOTAL'
df['status'] = df['status'].fillna('TOTAL')

3. 重塑为目标表格

使用pivot方法将长表转为宽表,并按指定顺序排序行:

# 透视生成目标格式
result = df.pivot(index='status', columns='main_cat', values='count')
# 按要求的顺序重新排列行
result = result.reindex(['CONF', 'CONF_NOT', 'TOTAL'])
# 移除列名的标签(让输出更整洁)
result.columns.name = None

4. 查看结果

打印result即可得到目标表格:

print(result)

输出结果:

TNP  NON_TNP
CONF      40689     3520
CONF_NOT   1841     1800
TOTAL     42530     5320

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:45:13