我有一个数据框,下面有列
df = pd.DataFrame({'t0_p0':[1,2,3], 't1_p0':[1,2,3], 't2_p0':[1,2,3], 't0_p1':[1,2,3], 't1_p1':[1,2,3], 't2_p1':[1,2,3], 't0_p3':[1,2,3], 't1_p3':[1,2,3], 't2_p3':[1,2,3], 'Month_1':[1,0,0],'Month_2':[0,1,0] 'Hour_1':[1,0,0],'Hour_2':[0,1,0], 'x_1':[0,1,1], 'holid':[2,7,8]})
对于上面的数据框,我想将Month和hours列乘以其他列。例如,t0_p0 * Month_1、t0_p0 * Month_2、...、't2_P3'* Month_2,小时数也是如此。我不想把一个月乘以一小时。
相乘的结果应添加到名为Month1_t0_p0或Hour2_t2_p3的新列中。所以基本上是两列的名字相乘放在一起。
pythonic的方法是什么我知道如何将列相乘,如:
df['Month1_t0_p0'] = df['Month_1'] * df['t0_p0']
但是,我不确定如何自动选择我想要相乘的列,并以我上面描述的方式创建和命名列。
2条答案
按热度按时间jrcvhitl1#
你可以这样做:
djp7away2#
作为一个初学者:创建一个新的df,其中只包含要与之相乘的列,然后迭代新的df。通过串联,用新列和那些你不想相乘的列创建最终的df。我不确定如何自动生成列的名称,也没有迭代的确切代码。抱歉就像我说的,也许是一个开始。