Создайте несколько столбцов данных, содержащих вычисленные значения из существующего столбца. - PullRequest
0 голосов
/ 31 мая 2018

У меня есть фрейм данных, 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.

Например, для ноября для Sonic, (100-[5*12.0])*0.2 = 8.0 и декабря для 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 голосов
/ 31 мая 2018

Один из векторизованных подходов состоит в том, чтобы утонуть в numpy:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...