我有下面的数据框,其中包含一些数字,其中Col1、Col2和Col3中的值之和等于Main列中的值.

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

例如,以下数据帧:

      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就地更新数据帧:

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相关问答推荐

即使在可见的情况下也不相互作用

什么相当于pytorch中的numpy累积ufunc

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

使用setuptools pyproject.toml和自定义目录树构建PyPi包

我们可以为Flask模型中的id字段主键设置默认uuid吗

如何设置视频语言时上传到YouTube与Python API客户端

ThreadPoolExecutor和单个线程的超时

计算每个IP的平均值

Python逻辑操作作为Pandas中的条件

需要帮助重新调整python fill_between与数据点

如何在TensorFlow中分类多个类

使用Python查找、替换和调整PDF中的图像'

在方法中设置属性值时,如何处理语句不可达[Unreacable]";的问题?

关于两个表达式的区别

当条件满足时停止ODE集成?

如何使用matplotlib查看并列直方图

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

随机森林n_估计器的计算

用0填充没有覆盖范围的垃圾箱

以元组为索引的Numpy多维索引