如何将某些列乘以常数?

时间:2018-11-15 18:38:10

标签: python pandas numpy

过去1个小时,我一直在尝试解决此问题,但收效甚微,甚至没有成功,这真是一团糟。

我有一个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 :(得分:2)

使用.. "styles": [ "node_modules/leaflet/dist/leaflet.css", "node_modules/leaflet.markercluster/dist/MarkerCluster.css", "node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css", "src/styles.css" ], ... 和您自己的mul来映射年龄

dict

答案 1 :(得分:1)

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

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']