Python 更改dataframe中的特定值
我有这样的想法:Python 更改dataframe中的特定值,python,pandas,Python,Pandas,我有这样的想法: Name Value NUM_SC A 1000 421 B 2000 127 C 3000 511 D 2000 718 E 1500 511 (may duplicate) for i in negative_sc: df[df.NUM_SC == i].Values *= (-1) 我想根据NUM_SC将一些值乘以(-
Name Value NUM_SC
A 1000 421
B 2000 127
C 3000 511
D 2000 718
E 1500 511 (may duplicate)
for i in negative_sc:
df[df.NUM_SC == i].Values *= (-1)
我想根据NUM_SC将一些值乘以(-1)。例如,对于NUM_SC中的511和127,将值乘以(-1)。对我起作用的是:
for i in negative_sc:
for j in range(76818):
if df.NUM_SC[j] == i:
df.Values[j] *= (-1)
其中负的包含NUM,我想用它的值乘以(-1)。在这个例子中,负的_sc=(511127)
但是这种方法需要很多时间。我试过这样的方法:
Name Value NUM_SC
A 1000 421
B 2000 127
C 3000 511
D 2000 718
E 1500 511 (may duplicate)
for i in negative_sc:
df[df.NUM_SC == i].Values *= (-1)
但这产生了错误,并没有产生任何结果
处理此类任务的最佳方式是什么?基于另一列中的值更改一列中的值
非常感谢 尝试此操作,使用为需要求反的列创建掩码
negative_sc = [511, 127]
mask = df['NUM_SC'].isin(negative_sc)
df.loc[mask, 'Value'] = df.loc[mask, 'Value'] * -1
您不应该将
[]
和列名称链接起来。所以df.Values[j]*=-1
和df[df.NUM_SC==i]。Values*=-1
都不起作用。有关详细信息,请参阅
相反,你应该:
df.loc[df.NUM_SC.isin(negative_sc), 'Values'] *= -1