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

Pandas 熊猫:删除特定列中的重复项,pandas,Pandas,我有一个熊猫数据框(这里用excel表示): 现在我想删除特定行(B)的所有副本(1)。 我怎么做 对于本例,结果如下所示: 您可以使用布尔掩码,然后通过设置NaNs,或者: 如果需要,可通过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

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

现在我想删除特定行(B)的所有副本(1)。 我怎么做

对于本例,结果如下所示:

您可以使用布尔掩码,然后通过设置
NaN
s,或者:



如果需要,可通过
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

谢谢!你知道如何使用“df.drop_duplicates()”?是的,使用
df.drop_duplicates(subset=['B'])
这真是太好了!谢谢!实际上,我正在尝试将“drop”列存储为现有数据帧中的一个新列,如下所示:df['name']=df.drop_duplicates(subset=['B'])。。。但它不起作用。你知道为什么吗?@totyped-不确定是否理解-drop_duplicates删除所有行,输出是另一个没有duplicates的数据帧。因此不可能添加到新列中。但是可以通过
join
添加所有列-重复项替换为
NaN
s-
df=df.join(df.drop\u重复项(子集=['B']),lsuffix=''
df['B'] = np.where(df['B'].duplicated(), np.nan,df['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