|
|
@@ -42,6 +42,12 @@ def get_cat2_label(cat1, cat2):
|
|
|
return f"{cat1_str}/{cat2}"
|
|
|
return cat1_str
|
|
|
|
|
|
+# 获取品类标签(处理空值)
|
|
|
+def get_cat_label(val):
|
|
|
+ if pd.notna(val) and str(val).strip():
|
|
|
+ return str(val)
|
|
|
+ return '未知'
|
|
|
+
|
|
|
# 计算渠道×日期×品类级别的矩阵数据
|
|
|
def calc_matrix_data(channel, date=None, level='cat1'):
|
|
|
"""计算指定渠道和日期的品类矩阵"""
|
|
|
@@ -55,8 +61,8 @@ def calc_matrix_data(channel, date=None, level='cat1'):
|
|
|
# 根据级别选择品类列
|
|
|
if level == 'cat1':
|
|
|
# 填充空值
|
|
|
- ch_df['头部一级品类'] = ch_df['头部一级品类'].fillna('未知')
|
|
|
- ch_df['再分享一级品类'] = ch_df['再分享一级品类'].fillna('未知')
|
|
|
+ ch_df['头部一级品类'] = ch_df['头部一级品类'].apply(get_cat_label)
|
|
|
+ ch_df['再分享一级品类'] = ch_df['再分享一级品类'].apply(get_cat_label)
|
|
|
row_col = '头部一级品类'
|
|
|
col_col = '再分享一级品类'
|
|
|
else:
|