创建包含现有列的计算值的多个数据框列

时间:2018-05-31 15:09:10

标签: python pandas for-loop dataframe

我有一个数据框sega_df

Month            2016-11-01     2016-12-01
Character                                                        
Sonic            12.0            3.0
Shadow           5.0             23.0

我想通过为我的数据框中的每个已存在的列应用公式来创建多个新列(简而言之,将列数增加一倍)。该公式为(100 - [5*eachcell])*0.2

例如,11月为Sonic,(100-[5*12.0])*0.2 = 8.0和12月为Sonic,(100-[5*3.0])*0.2 = 17.0我的理想输出是:

Month            2016-11-01     2016-12-01     Weighted_2016-11-01    Weighted_2016-12-01
Character                                                        
Sonic            12.0            3.0           8.0                    17.0
Shadow           5.0             23.0          15.0                   -3.0  

我知道如何创建一个for循环来创建一个列。如果仅考虑一个月,则适用:

for w in range(1,len(sega_df.index)):
    sega_df['Weighted'] = (100 - 5*sega_df)*0.2
    sega_df[sega_df < 0] = 0

我还没有获得创建多个列的技能或经验。我已经找到了其他问题,可能会回答我到底在做什么,但尚无法解决任何问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

一种矢量化方法是淹没到A = sega_df.values A = (100 - 5*A) * 0.2 res = pd.DataFrame(A, index=sega_df.index, columns=('Weighted_'+sega_df.columns))

sega_df = sega_df.join(res)

然后将结果加入原始数据框:

{{1}}