python - 如何根据另一列的值更改 Pandas DataFrame 中的值

标签 python pandas dataframe

我有以下 DataFrame,其中包含一些数字,其中 Col1、Col2 和 Col3 中的值之和等于 Main 列中的值。

如果 Cat 列中的值等于 Main 列中的相应值,我如何替换它们?

例如,下面的DataFrame:

      Main        Col1        Col2        Col3
0     100         50          50          0
1     200         0           200         0
2     30          20          5           5
3     500         0           0           500

将更改为:

      Main        Col1        Col2        Col3
0     100         50          50          0
1     200         0           EQUAL       0
2     30          20          5           5
3     500         0           0           EQUAL

最佳答案

您可以使用 filter 仅应用于“Col”列(您也可以使用列表切片,参见替代方法),然后使用 mask 更改匹配值,最后 update 就地更新 DataFrame:

df.update(df.filter(like='Col').mask(df.eq(df['Main'], axis=0), 'EQUAL'))

备选方案:

cols = ['Col1', 'Col2', 'Col3']
df.update(df[cols].mask(df.eq(df['Main'], axis=0), 'EQUAL'))

输出:

   Main  Col1   Col2   Col3
0   100    50     50      0
1   200     0  EQUAL      0
2    30    20      5      5
3   500     0      0  EQUAL

关于python - 如何根据另一列的值更改 Pandas DataFrame 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72736696/

相关文章:

python - 如何从日期时间对象读取日期?

python - 在文件中写入了一些变量名,需要使用 python 将其替换为新生成的随机值?

r - 如何在 R Shiny 中显示带有输入的简单数据框

python - Bottle POST 或 PUT 请求看不到多个参数

python - 如何使用 https 而不是 http 启动 Dockerized Python Flask 应用程序?

python - Pandas 合并 df 错误

python - Pandas ,基于列值的条件列分配

python - 根据与行值的比较在 DataFrame 中创建新列

python - 尝试使用 pandas datareader 获取股票数据时出现 SSL 错误

python - 是否有一个 Python 函数可以根据条件过滤并将二进制值分配给数据集中的列?