Я хочу умножить два столбца, но только если они принадлежат определенному классу.
Я попытался умножить столбцы на основе условия, как показано ниже:
import pandas as pd
import numpy as np
d = {'Values':[1,1,1],'Class':[0,1,0],'Weights':[0.8,0.9,0.7]}
dataset = pd.DataFrame(data = d)
print(dataset)
(dataset[dataset['Class']==1])['Values'] = (dataset[dataset['Class']==1])['Values']*dataset['Weights']
print(dataset)
но это не изменит набор данных.
тогда я попробовал это:
d = {'Values':[1,1,1],'Class':[0,1,0],'Weights':[0.8,0.9,0.7]}
dataset = pd.DataFrame(data = d)
print(dataset)
dataset['Weights'] = dataset['Weights']*dataset['Class']
replace_weights = {0:1}
dataset['Weights'] = dataset['Weights'].replace(replace_weights)
dataset['Values'] = dataset['Values']*dataset['Weights']
print(dataset)
это дает мне ожидаемый результат, но я хотел бы знать, есть ли более простой или более элегантный способ сделать это?
мой входной фрейм данных был:
Values Class Weights
0 1 0 0.8
1 1 1 0.9
2 1 0 0.7
и выходной кадр данных:
Values Class Weights
0 1.0 0 1.0
1 0.9 1 0.9
2 1.0 0 1.0