如何删除重复ID的特定列中的数据?

2024-09-21 11:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的数据框:

ID  Name    State
1   John    DC
1   John    VA
2   Smith   NE
3   Janet   CA
3   Janet   NC
3   Janet   MD      

我想删除重复IDsState值,如下所示:

ID  Name    State
1   John    nan
1   John    nan
2   Smith   NE
3   Janet   nan
3   Janet   nan
3   Janet   nan

你知道怎么解决这个问题吗?你知道吗

谢谢你


Tags: 数据nameididsnandcjohnmd
2条回答

您可以使用np.where

In[25]:df['State']=np.where(df['Name'].duplicated(keep=False),np.nan,df['State'])

In[26]:df
Out[26]: 
   ID   Name State
0   1   John   NaN
1   1   John   NaN
2   2  Smith    NE
3   3  Janet   NaN
4   3  Janet   NaN
5   3  Janet   NaN

时间:

%timeit df.loc[df.duplicated(subset=['ID'], keep=False), 'State'] = None
100 loops, best of 3: 2.32 ms per loop

%timeit df['State']=np.where(df['Name'].duplicated(keep=False),np.nan,df['State'])
1000 loops, best of 3: 657 µs per loop

duplicated返回一个布尔掩码,其中行在subset中定义的列上重复。keep=False表示不应将第一个或最后一个重复项视为非重复项。然后使用loc允许我们分配到发生重复的行。你知道吗

df.loc[df.duplicated(subset=['ID'], keep=False), 'State'] = None

df

enter image description here

相关问题 更多 >

    热门问题