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

Lya*_*yam 4 python duplicates dataframe pandas

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

A    B     C
1    Blue  Green
2    Red   Green
3    Red   Green
4    Blue  Orange
5    Blue  Orange
Run Code Online (Sandbox Code Playgroud)

我想删除(或用虚拟字符串替换)与Band 相关的重复行的值C,而不删除整行,理想情况下产生:

A    B     C
1    Blue  Green
2    Red   Green
3    NaN   NaN
4    Blue  Orange
5    Nan   NaN
Run Code Online (Sandbox Code Playgroud)

根据此线程:我尝试使用的Pandas 中替换跨列的重复值pd.Series.duplicated,但是我无法让它处理列子集中的重复项。

我还玩过:

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
Run Code Online (Sandbox Code Playgroud)

然而,这几乎替换了每一列999中的每一行 - 很明显我做错了什么。我很感激有关如何进行的任何建议!

Tom*_*Tom 6

df.loc[df.duplicated(subset=['B','C']), ['B','C']] = np.nan 似乎对我有用。

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

  • 如果你做 `df.loc[df.duplicated(subset=['B','C']),['B','C'] = np.NaN` 你保留 'A' 的值并且只删除'B' 和 'C' (2认同)