Как мне умножить определенные столбцы на константу? - PullRequest
0 голосов
/ 15 ноября 2018

Я пытался работать над этой проблемой в течение последнего часа, но без особого успеха, и это беспорядок.

У меня есть df

 Age   Bronx   Manhatten  Brooklyn   Queens  
 0      10     11         13         12
 1      8      7          9          9
 2      5      8          7          6 
 3      3      2          3          4
 4      8      6          8          7
 5      10     12         13         14
 6      11     13         12         10
 7      7      8          6          8

Как мне умножить все столбцы (Бронкс, Манхэттен, Бруклин, Квинс) для

age 0 by 0.05
age 1 by 0.02
age 2,3,4, by 0.2

и затем для всехдругие столбцы опускают его.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Есть много способов сделать это:

def multiply_age(age):
    if age == 0:
        age *= 0.05
    elif age == 1:
        age *= 0.02
    elif age in {2, 3, 4}:
        age *= 0.2
    return age

df['Age'].apply(multiply_age)

df['Age'].apply(multiply_age) вернет серию возрастов. Затем вы можете сделать это информационным фреймом, выполнив pd.DataFrame(df['Age'].apply(multiply_age)).

Вы также можете попробовать это:

def multiply_age(row):
    age = row['Age']
    if age == 0:
        age *= 0.05
    elif age == 1:
        age *= 0.02
    elif age in {2, 3, 4}:
        age *= 0.2
    row['Age'] = age
    return row

df.apply(lambda row: multiply_age(row), axis=1)['Age']
0 голосов
/ 15 ноября 2018

Использование mul с вашим собственным dict для сопоставления с возрастом

age=pd.Series({0:0.5,1:0.2,2:0.2,3:0.2,4:0.2})
df.set_index('Age').mul(age,axis=0).fillna(df.set_index('Age')).reset_index()
Out[116]: 
   index  Bronx  Manhatten  Brooklyn  Queens
0      0    5.0        5.5       6.5     6.0
1      1    1.6        1.4       1.8     1.8
2      2    1.0        1.6       1.4     1.2
3      3    0.6        0.4       0.6     0.8
4      4    1.6        1.2       1.6     1.4
5      5   10.0       12.0      13.0    14.0
6      6   11.0       13.0      12.0    10.0
7      7    7.0        8.0       6.0     8.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...