首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在熊猫数据中删除或替换重复行中的值

在熊猫数据中删除或替换重复行中的值
EN

Stack Overflow用户
提问于 2019-05-06 23:22:45
回答 3查看 4.8K关注 0票数 4

我有一个数据框架df,其中一些行相对于列的子集是重复的:

代码语言:javascript
复制
A    B     C
1    Blue  Green
2    Red   Green
3    Red   Green
4    Blue  Orange
5    Blue  Orange

我希望删除(或用虚拟字符串替换)有关BC的重复行的值,而不删除整行,理想情况下生成:

代码语言:javascript
复制
A    B     C
1    Blue  Green
2    Red   Green
3    NaN   NaN
4    Blue  Orange
5    Nan   NaN

根据这个线程:Replace duplicate values across columns in Pandas,我尝试过使用pd.Series.duplicated,但是我无法让它处理列子集中的重复项。

我还玩过:

代码语言:javascript
复制
is_duplicate = df.loc[df.duplicated(subset=['B','C'])]
df = df.where(is_duplicated==True, 999)  # 999 intended as a placeholder that I could find-and-replace later on

但是,在每一列中,这几乎用999替换了几乎每一行--所以很明显,我做错了什么。我希望你能给我任何关于如何进行的建议!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-06 23:35:15

df.loc[df.duplicated(subset=['B','C']), ['B','C']] = np.nan似乎为我工作。

编辑,包括@ALollz和@macaw_9227更正。

票数 6
EN

Stack Overflow用户

发布于 2019-05-07 00:20:07

让我和大家分享一下我最初是如何面对这些挑战的。显然,有更快的方法(一条直线),但为了解决这个问题,让我们在一个更直观的层次上这样做(稍后,您将看到您可以在一行中完成)。

所以我们开始..。

代码语言:javascript
复制
df = pd.DataFrame({"B":['Blue','Red','Red','Blue','Blue'],"C":['Green','Green','Green','Orange','Orange']})

会导致

步骤1:识别复制:

为此,我只需添加另一个(促进者)列,并使用True/False询问B和C是否重复。

代码语言:javascript
复制
df['IS_DUPLICATED']= df.duplicated(subset=['B','C'])

步骤2:标识“True”IS_DUPLICATED:的索引

代码语言:javascript
复制
dup_index = df[df['IS_DUPLICATED']==True].index

结果:Int64Index([2, 4], dtype='int64')

步骤3:将它们标记为Nan:

代码语言:javascript
复制
df.iloc[dup_index]=np.NaN

步骤4:删除IS_DUPLICATED列:

代码语言:javascript
复制
df.drop('IS_DUPLICATED',axis=1, inplace=True)

和预期的结果:

票数 2
EN

Stack Overflow用户

发布于 2019-05-07 00:32:13

我会用

代码语言:javascript
复制
df[['B','C']]=df[['B','C']].mask(df.duplicated(['B','C']))
df
Out[141]: 
   A     B       C
0  1  Blue   Green
1  2   Red   Green
2  3   NaN     NaN
3  4  Blue  Orange
4  5   NaN     NaN
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56013541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档