Python 如何在其他列的条件下向列添加值

Python 如何在其他列的条件下向列添加值,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,在pandas中,如何在另一列中的字符串的条件下向列添加值?类似于二维切片操作的东西 例如,具有如下数据帧: df = pd.DataFrame({'name': ['foo', 'foo', 'bar', 'bar'], 'colx': [1, 2, 3, 4], 'coly': [5, 6, 7, 8]}) colx coly name 0 11 5 foo 1 12 6 f

在pandas中,如何在另一列中的字符串的条件下向列添加值?类似于二维切片操作的东西

例如,具有如下数据帧:

df = pd.DataFrame({'name': ['foo', 'foo', 'bar', 'bar'],
                   'colx': [1, 2, 3, 4],
                   'coly': [5, 6, 7, 8]})
   colx  coly name
0    11     5  foo
1    12     6  foo
2     3     7  bar
3     4     8  bar
如果列名为foo,如何向colx列添加10

生成的df如下所示:

df = pd.DataFrame({'name': ['foo', 'foo', 'bar', 'bar'],
                   'colx': [1, 2, 3, 4],
                   'coly': [5, 6, 7, 8]})
   colx  coly name
0    11     5  foo
1    12     6  foo
2     3     7  bar
3     4     8  bar
要修改值时,可以使用loc运算符执行切片:

df.loc[df.name == 'foo','colx'] += 10
使用pandas的底层切片方法,这将比在数据帧上循环或使用apply快得多。如果您的数据帧变大,情况会更糟

编辑:

如果需要多个条件,则需要括号,例如:

df.loc[(df.name == 'foo') & (df.coly == '5'),'colx'] += 10
要修改值时,可以使用loc运算符执行切片:

df.loc[df.name == 'foo','colx'] += 10
使用pandas的底层切片方法,这将比在数据帧上循环或使用apply快得多。如果您的数据帧变大,情况会更糟

编辑:

如果需要多个条件,则需要括号,例如:

df.loc[(df.name == 'foo') & (df.coly == '5'),'colx'] += 10

我怎么能在这里给出两个条件?如果说,name是'foo'而coly是'5',那么将10添加到colx我如何在这里给出两个条件?如果说,名称是“foo”,coly是“5”,那么将10添加到colx中