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