python - 如何将值添加到以其他列为条件的列

标签 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]})

如果 name 列是 foo,如何将 10 添加到 colx 列?

生成的 df 看起来像这样:

   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 的底层切片方法,这比循环或在数据帧上使用应用要快得多。如果您的数据框变大,则更是如此。

编辑:

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

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

关于python - 如何将值添加到以其他列为条件的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313889/

相关文章:

javascript - 在 Python 中转义 JavaScript 字符串

python - Keras Conditional GAN 训练不好

python/matplotlib 绘图相当于 R 的符号图?

Python 包和导入 - 需要澄清

python - 如何将父类的相同更新值传递给内部类?

python - pandas - 将索引类型从 RangeIndex 转换为 Int64Index

Python,MySQL,从数据库加载数据,更改它,再次保存?

python - 使用 Python 中的读取文本文件创建一个包含字符串的列表

python - Pandas.Series.dtype.kind 对于 pd.interval 来说是 None

python - Pandas 数据帧 : split multiple columns into multiple columns