简体   繁体   中英

Create multiple dataframe columns containing calculated values from an existing column

I have a dataframe, sega_df :

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

I would like to create multiple new columns, by applying a formula for each already existing column within my dataframe (to put it shortly, pretty much double the number of columns). That formula is (100 - [5*eachcell])*0.2 .

For example, for November for Sonic, (100-[5*12.0])*0.2 = 8.0 , and December for Sonic, (100-[5*3.0])*0.2 = 17.0 My ideal output is:

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  

I know how to create a for loop to create one column. This is for if only one month was in consideration:

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

I haven't gotten the skills or experience yet to create multiple columns. I've looked for other questions that may answer what exactly I am doing but haven't gotten anything to work yet. Thanks in advance.

One vectorised approach is to drown to numpy :

A = sega_df.values
A = (100 - 5*A) * 0.2

res = pd.DataFrame(A, index=sega_df.index, columns=('Weighted_'+sega_df.columns))

Then join the result to your original dataframe:

sega_df = sega_df.join(res)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM