pandas:删除两列中具有相同索引的行中的重复值

Posted

技术标签:

【中文标题】pandas:删除两列中具有相同索引的行中的重复值【英文标题】:pandas: removing duplicate values in rows with same index in two columns 【发布时间】:2022-01-11 20:42:52 【问题描述】:

我有一个如下的数据框:

import numpy as np
import pandas as pd
df = pd.DataFrame('text':['she is good', 'she is bad'], 'label':['she is good', 'she is good'])

我想逐行比较,如果两个相同索引的行具有相同的值,请将“标签”列中的重复项替换为“相同”一词。

期望的输出:

           pos        label
0  she is good      same

1   she is bad  she is good

到目前为止,我已经尝试了以下方法,但它返回错误:

ValueError: Length of values (1) does not match length of index (2)

df['label'] =np.where(df.query("text == label"), df['label']== ' ',df['label']==df['label'] )

【问题讨论】:

【参考方案1】:

您的语法不正确,请查看numpy.where 的文档。 检查两列之间是否相等,并替换标签列中的值:

import numpy as np
df['label'] = np.where(df['text'].eq(df['label']),'same',df['label'])

打印:

          text        label
0  she is good         same
1   she is bad  she is good

【讨论】:

以上是关于pandas:删除两列中具有相同索引的行中的重复值的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 选择两列中具有相同值的行

Pandas - 在两列中查找具有匹配值的行并在另一列中相乘

如何选择在两列中具有相同值集的行,从而连接第三列中的值?

从数据框中删除重复项,基于两列 A,B,在另一列 C 中保持具有最大值的行

python pandas:删除A列的重复项,保留B列中具有最高值的行

用R中不同数据帧中具有相同ID的行中的值替换列中的NA