如何在排序后的DataFrame列中标记各值的首次出现
Pandas 实现排序后标记唯一值首次出现
问题说明
现有如下结构的DataFrame:
store ----- LA TX NY LA CA TX LA OR ID
需求是先对store列排序,然后给每个值的首次出现标记1,重复出现的位置留空,最终得到这样的结果:
store unique ----- ------ CA 1 ID 1 LA 1 LA LA NY 1 OR 1 TX 1 TX
实现代码
直接用Pandas内置方法就能完成,步骤如下:
- 先构造示例DataFrame并按
store列排序:
import pandas as pd import numpy as np # 构造目标DataFrame df = pd.DataFrame({'store': ['LA', 'TX', 'NY', 'LA', 'CA', 'TX', 'LA', 'OR', 'ID']}) # 按store列排序并重置索引 df = df.sort_values('store').reset_index(drop=True)
- 生成
unique标记列:
# 利用duplicated方法识别重复项,首次出现的项标记为1,重复项留空 df['unique'] = np.where(df['store'].duplicated(keep='first'), '', 1)
duplicated(keep='first')会返回布尔数组,首次出现的项对应False,重复项对应True;再通过np.where将False位置设为1,True位置设为空字符串,就能得到你需要的结果。
内容的提问来源于stack exchange,提问作者Berny
相关产品推荐
相关产品推荐

