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

如何在Python pandas DataFrame中按条件将行转换为分类维度列

实现方案

核心逻辑为识别分类合计行后向下填充分类信息,过滤掉合计行后重排列顺序即可,适配子项行数不固定的场景:

import pandas as pd

# 原始数据
data = [['FRUIT', 'FRU', 100],['A.GRAPE','A.GRA', 50],['A.APPLE','A.APP', 50],
        ['VEGETABLE', 'VEG', 75],['A.TOMATO','A.TOM', 25],['A.CABBAGE','A.CAB', 25],['A.CARROT','A.CAR', 25]]
df = pd.DataFrame(data, columns = ['name', 'abbrevation', 'value'])

# 1. 生成分类行掩码:示例中分类行name不含".",可根据实际数据调整判断规则
mask = ~df['name'].str.contains('\.')

# 2. 新增分类相关列,仅分类行有值其余为空
df['category'] = df['name'].where(mask)
df['category abbrevation'] = df['abbrevation'].where(mask)

# 3. 向下填充分类信息,所有子项自动匹配所属分类
df[['category', 'category abbrevation']] = df[['category', 'category abbrevation']].ffill()

# 4. 过滤合计行、重排列顺序得到最终结果
df2 = df[~mask][['category', 'category abbrevation', 'name', 'abbrevation', 'value']].reset_index(drop=True)

输出的df2完全匹配需求的目标格式。如果分类行有其他识别规则(比如固定行号、value为子项合计等),仅需修改第一步mask的生成逻辑即可,其余步骤无需调整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:05