我过去常常pd.GetDummies对我的分类变量进行热编码以用作预测变量。对于我的一些具有许多唯一值的列,我有许多新列,我正在尝试找到一种快速方法来为这些创建交互项。(我只想要我的列子集的交互,所以PolynomialFeatures()不会工作......或者它会吗?)
这是我想要做的:
步骤1:为我想要乘法的每个子集创建列名列表:channel = [col for col in df if col.startswith('channel')]
quote = [col for col in df if col.startswith('quote')]
print(channel[:1])
Out: 'channel_A'
'channel_B'
第2步:for循环:cols = 'channel quote'.split()
for col in cols:
for i in col:
colname = 'value_X_'+i
df[colname] = df['value_days']*df[i]+0
问题是内部循环不能识别col为对象:它将其识别为字符串(错误= 'c',证明:for col in cols:
for i in col:
print i
Out[1]:
c
h
.
.
.
o
t
e
目标:我期望的结果是获得一个以两列命名的新列最初相乘并具有乘法值。
例如,通道中的第一个元素是channel_A,所以我想获得一个名为的新列value_X_channel_A,它的值应该等于value_days* 的乘积channel_A。value_days | channel_A | value_X_channel_A
-------------------------------------------
5 |5 |25
如果我只运行内部循环并替换为col,则此工作完全正常channel。
我怎样才能让它发挥作用?
提前致谢。