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

如何使用pandas实现品牌与月份的特征交叉生成BrandsxMonths新特征

实现方案

pandas可以非常简便的完成特征交叉操作,无需依赖TensorFlow,以下是不同场景下的实现方式:

  • 方案1:直接拼接两个字段生成交叉列
    如果不需要对月份做分桶处理,直接将两个字段转成字符串后拼接即可生成BrandsxMonths特征:
import pandas as pd

# 示例数据初始化
df = pd.DataFrame({
    'Brands': ['hersheys', 'hersheys', 'snickers', 'reeses'],
    'Months': ['2020-08', '2020-09', '2020-01', '2019-02'],
    'Sales': ['$100', '$200', '$20', '$200']
})

# 生成交叉特征
df['BrandsxMonths'] = df['Brands'] + '_' + df['Months']

输出结果中BrandsxMonths列的取值会是hersheys_2020-08、snickers_2020-01这类格式。

  • 方案2:先对月份分桶再交叉
    如果需要和TensorFlow分桶逻辑对齐,先对月份做区间划分再做交叉,实现如下:
# 先把月份转成datetime格式方便分桶
df['Months'] = pd.to_datetime(df['Months'])

# 示例:按年份分桶,也可以按季度、自定义时间区间等规则分桶
df['month_bucket'] = df['Months'].dt.year.astype(str)
# 按季度分桶可以写为 df['month_bucket'] = df['Months'].dt.to_period('Q').astype(str)

# 再生成分桶后的交叉特征
df['BrandsxMonths_bucket'] = df['Brands'] + '_' + df['month_bucket']
  • 方案3:生成One-Hot编码形式的交叉特征
    如果交叉特征需要直接输入模型,也可以直接生成独热编码格式的交叉特征:
# 分别对两个字段做独热编码,再按位置相乘得到交叉特征的独热编码
brands_onehot = pd.get_dummies(df['Brands'], prefix='brand')
months_onehot = pd.get_dummies(df['Months'], prefix='month')
cross_onehot = brands_onehot.values[:,:,None] * months_onehot.values[:,None,:]
# 也可以直接用拼接后字段做独热:cross_onehot = pd.get_dummies(df['BrandsxMonths'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:15:11