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

如何在DataFrame中实现层级分组展示并添加不重复的StoreCt列

解决方案

要实现树形层级显示、添加不重复的StoreCt列的需求,可按以下步骤操作:

步骤1:计算并添加StoreCt列

先通过分组统计每个Retailer的门店数,再将统计值映射到原DataFrame中,为每个Retailer对应的行先赋上StoreCt值:

import pandas as pd

# 假设原始DataFrame为df
df['StoreCt'] = df['Retailer'].map(df.groupby('Retailer').size())

步骤2:按指定层级排序

按照DC→Retailer→Product的顺序对DataFrame排序,确保同组数据集中在一起:

df_sorted = df.sort_values(['DC', 'Retailer', 'Product'])

步骤3:处理重复值,实现树形空白效果

将同一分组内重复的DC、Retailer和StoreCt值替换为空字符串,达到树形层级的显示效果:

# 重复的DC列值置空
df_sorted['DC'] = df_sorted['DC'].mask(df_sorted['DC'].duplicated(), '')
# 重复的Retailer列值置空
df_sorted['Retailer'] = df_sorted['Retailer'].mask(df_sorted['Retailer'].duplicated(), '')
# 同一Retailer下除第一行外的StoreCt置空
df_sorted['StoreCt'] = df_sorted['StoreCt'].mask(df_sorted['Retailer'].duplicated(), '')

步骤4:调整列顺序

将列调整为需求指定的DC→Retailer→StoreCt→Product→Cs→Volume→Velocity顺序:

final_df = df_sorted[['DC', 'Retailer', 'StoreCt', 'Product', 'Cs', 'Volume', 'Velocity']]

最终结果

运行上述代码后,final_df的输出将与期望的树形结构完全一致:

DCRetailerStoreCtProductCsVolumeVelocity
ABCjoe1barsCsCostVelocity
randy1barsCsCostVelocity
DFCjoe3drinks1CsCostVelocity
drinks2CsCostVelocity
bars2CsCostVelocity
peter1drinks2CsCostVelocity
XYZjoe1snacksCsCostVelocity
john1drinksCsCostVelocity

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:45:35