好的，接下来我要来分析无芯市场的了，在无芯市场里，还得加上一个球高，即球高，克重，卷数，然后其他全部不变，帮我修改下代码：
# -*- coding: utf-8 -*-
import pandas as pd
from pathlib import Path

# ───────────────── 参数区 ───────────────── #
file_path  = Path(r'D:\pydoc\卷纸产品数据分析\excel2+结果\处理后的长表数据.xlsx')
CORE_TYPE  = '有芯'           # '有芯' / '无芯'
ON_SALE    = 1                # 1=上架
TOP_N      = 5                # 每品牌前 N 规格
spec_cols_for_sku_id = [
    '品牌','系列','卷数','单卷克重','层数',
    '有芯/无芯','是否压花','球高','节距','有无香味'
]
# ───────────────── 读取 & 过滤 ───────────────── #
df = pd.read_excel(file_path)

df = df[(df['有芯/无芯'] == CORE_TYPE) & (df['是否上架'] == ON_SALE)].copy()

num_cols = ['页面实时价格','销售额','卷数','单卷克重']
df[num_cols] = df[num_cols].apply(pd.to_numeric, errors='coerce')
df.dropna(subset=['卷数','单卷克重','页面实时价格'], inplace=True)
df = df[(df['卷数'] > 0) & (df['单卷克重'] > 0)]

# ───────────────── 生成 SKU_id & 规格标签 ───────────────── #
df['SKU_id'] = df[spec_cols_for_sku_id].astype(str).agg('_'.join, axis=1)

df['单卷克重_int'] = df['单卷克重'].round().astype(int)
df['规格'] = df['卷数'].astype(int).astype(str) + '卷×' + df['单卷克重_int'].astype(str) + 'g'

# ───────────────── Step-A：链接级均价 ───────────────── #
# ① 先把 17 个月的同一链接压成 1 行，求 "链接均价"
link_price = (df
              .groupby('商品链接', as_index=False)['页面实时价格']
              .mean()
              .rename(columns={'页面实时价格':'链接均价'}))

# ② 把链接均价合并回 df，只保留维度列 + 链接均价（去重保留一行即可）
link_dim = (df[['商品链接','品牌','规格','SKU_id']]
            .drop_duplicates()
            .merge(link_price, on='商品链接', how='left'))

# ───────────────── Step-B：品牌 × 规格聚合 ───────────────── #
# 销售额用原 df（17 个月叠加）来求；价格用 link_dim 来求
sales_agg = (df
             .groupby(['品牌','规格'])
             .agg(
                 SKU数      = ('SKU_id','nunique'),
                 链接数量    = ('商品链接','nunique'),
                 销售额      = ('销售额','sum')
             )
             .reset_index())

price_agg = (link_dim
             .groupby(['品牌','规格'])
             .agg(
                 价格均价    = ('链接均价','mean'),
                 价格中位数  = ('链接均价','median')
             )
             .reset_index())

# 合并销售 + 价格两部分
spec_grp = (sales_agg
            .merge(price_agg, on=['品牌','规格'], how='left'))

# ───────────────── Step-C：占比、排名、市场占比 ───────────────── #
spec_grp['品牌总销售额'] = spec_grp.groupby('品牌')['销售额'].transform('sum')
spec_grp['销售额占比%']  = spec_grp['销售额'] / spec_grp['品牌总销售额'] * 100

spec_grp['销量排名'] = (
    spec_grp.groupby('品牌')['销售额']
            .rank(method='first', ascending=False).astype(int)
)

total_core_sales = spec_grp['销售额'].sum()
spec_grp['市场占比%'] = spec_grp['销售额'] / total_core_sales * 100

# ───────────────── Step-D：收尾整理 ───────────────── #
cols = ['品牌','规格','SKU数','链接数量',
        '价格均价','价格中位数',
        '销售额','销售额占比%','市场占比%','销量排名']
spec_grp = spec_grp[cols].sort_values(['品牌','销量排名'])

# ───────────────── 打印结果 ───────────────── #
pd.set_option('display.float_format', lambda x: f'{x:,.2f}')
pd.set_option('display.width', 160)

print("\n" + "="*90)
print(f"    {CORE_TYPE} 卷纸市场：品牌 × 规格画像（前 {TOP_N}，不分平台）")
print("="*90)

for brand in spec_grp['品牌'].unique():
    sub = spec_grp[spec_grp['品牌'] == brand].head(TOP_N)
    print(f"\n▶ 品牌：{brand}  （前 {TOP_N} 规格，按销售额降序）")
    print(sub.to_string(index=False))
    print()

# 如需导出
# spec_grp.to_excel('有芯卷纸_规格画像_品牌级.xlsx', index=False)