Python 如何将某些列乘以常数?

Python 如何将某些列乘以常数?,python,pandas,numpy,Python,Pandas,Numpy,在过去的一个小时里,我一直在努力解决这个问题,但几乎没有成功,结果是一团糟 我有一个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

在过去的一个小时里,我一直在努力解决这个问题,但几乎没有成功,结果是一团糟

我有一个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
我如何将所有列(布朗克斯、曼哈顿、布鲁克林、皇后区)相乘


然后,对于所有其他列,删除它

使用
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

使用
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

有很多方法可以做到这一点:

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(乘以年龄)
将返回一系列年龄。然后,您可以通过执行
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']

有很多方法可以做到这一点:

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(乘以年龄)
将返回一系列年龄。然后,您可以通过执行
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']