Pandas:删除特定列中的重复项

jam*_*mes 2 pandas

我有一个熊猫数据框(这里用excel表示):

在此处输入图片说明

现在我想删除特定行 (B) 的所有重复项 (1)。我该怎么做 ?

对于此示例,结果将如下所示: 在此处输入图片说明

jez*_*ael 5

您可以使用duplicated布尔掩码,然后将NaNs设置为loc,masknumpy.where

df.loc[df['B'].duplicated(), 'B'] = np.nan
Run Code Online (Sandbox Code Playgroud)
df['B'] = df['B'].mask(df['B'].duplicated())
Run Code Online (Sandbox Code Playgroud)
df['B'] = np.where(df['B'].duplicated(), np.nan,df['B'])
Run Code Online (Sandbox Code Playgroud)

如果需要按B列删除重复行的替代方法:

df = df.drop_duplicates(subset=['B'])
Run Code Online (Sandbox Code Playgroud)

样本:

df = pd.DataFrame({
    'B': [1,2,1,3],
    'A':[1,5,7,9]
})
print (df)
   A  B
0  1  1
1  5  2
2  7  1
3  9  3

df.loc[df['B'].duplicated(), 'B'] = np.nan
print (df)
   A    B
0  1  1.0
1  5  2.0
2  7  NaN
3  9  3.0

df = df.drop_duplicates(subset=['B'])
print (df)
   A  B
0  1  1
1  5  2
3  9  3
Run Code Online (Sandbox Code Playgroud)