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
您可以使用np.where:
时间:
duplicated
返回一个布尔掩码,其中行在subset
中定义的列上重复。keep=False
表示不应将第一个或最后一个重复项视为非重复项。然后使用loc
允许我们分配到发生重复的行。你知道吗相关问题 更多 >
编程相关推荐