我有以下 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/