Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改dataframe中的特定值_Python_Pandas - Fatal编程技术网

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