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

时间:2017-11-29 13:23:18

标签: pandas

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

enter image description here

现在我想删除特定行(B)的所有dublicates(1)。 我该怎么办?

对于此示例,结果将如下所示: enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用duplicated作为布尔掩码,然后按locmasknumpy.where设置NaN

df.loc[df['B'].duplicated(), 'B'] = np.nan
df['B'] = df['B'].mask(df['B'].duplicated())
df['B'] = np.where(df['B'].duplicated(), np.nan,df['B'])

如果需要,请按B列删除重复行:

df = df.drop_duplicates(subset=['B'])

样品:

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