Python 基于类的乘法列
我想将两列相乘,但前提是它们属于特定的类 我已尝试根据如下所示的条件将列相乘:Python 基于类的乘法列,python,python-3.x,pandas-groupby,Python,Python 3.x,Pandas Groupby,我想将两列相乘,但前提是它们属于特定的类 我已尝试根据如下所示的条件将列相乘: 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[datase
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
在Pandas中,当您想要更改数据帧片段的值时,必须使用loc函数。否则,您的代码是正确的 要返回代码,请执行以下操作:
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)
Class Values Weights
0 0 1 0.8
1 1 1 0.9
2 0 1 0.7
dataset.loc[dataset['Class']==1, 'Values'] = dataset[dataset['Class']==1]['Values']*dataset['Weights']
print(dataset)
Class Values Weights
0 0 1.0 0.8
1 1 0.9 0.9
2 0 1.0 0.7
你应该只编辑你的问题来澄清你想说什么。如果您有“另一个问题”帖子“另一个问题”,请不要编辑您的问题以将其转换为“另一个问题”。否则,已经发布的答案(如我的)就会过时。你说得对。我再次编辑了这个问题以改进它。谢谢