如何用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
相关产品推荐
相关产品推荐

