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