如何为R语言DataFrame中首次出现的C_ID标记MainRecord列?
给每个联系人ID首次出现行标记"X"的解决方案
嘿,我来帮你搞定这个需求!既然你的DataFrame已经按C_ID排好序了,我们有几种简洁的方法可以实现给每个C_ID首次出现的行的MainRecord列填入"X"的目标,下面给你两种实用方案:
方案一:分组定位首行赋值
这种方法直观易懂,先初始化列,再定位每个分组的首行进行赋值:
import pandas as pd # 假设你的df已经按C_ID排序完成 df['MainRecord'] = '' # 先把列初始化为空字符串 # 获取每个C_ID组的第一行索引 first_record_indices = df.groupby('C_ID').head(1).index # 给这些首行的MainRecord列赋值"X" df.loc[first_record_indices, 'MainRecord'] = 'X'
方案二:用duplicated函数快速标记
这个方法更简洁,利用duplicated函数识别重复行的特性——它会给首次出现的行返回False,重复行返回True,我们取反就能定位首行:
import pandas as pd import numpy as np df['MainRecord'] = np.where(~df.duplicated('C_ID'), 'X', '')
如果不想让非首行显示空字符串,想显示NaN的话,把代码里的''换成np.nan就可以了。
两种方法都能完美实现你要的效果,处理后会和你给出的示例结果一致:
| C_ID | Name | MainRecord |
|---|---|---|
| 1 | JM | X |
| 1 | JM | |
| 1 | JM | |
| 2 | DM | X |
| 3 | TY | X |
| 3 | TY |
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

