如何为DataFrame添加标记列,判断某列值是否为最后出现?
给DataFrame加标记列:判断指定列值是否是最后一次出现
需求说明
有一个多列的DataFrame,要新增一列last_row_of_col_1,用来标记col_1列里的每个值是不是该值在这列的最后一次出现。
输入数据
col_1 col_2 0 1 A 1 2 B 2 1 C 3 1 D 4 3 E
期望输出
col_1 col_2 last_row_of_col_1 0 1 A False 1 2 B True 2 1 C False 3 1 D True 4 3 E True
解决方法
方法1:用duplicated函数快速实现
pandas的duplicated函数可以识别重复行,设置keep='last'时,只会把除了最后一次出现的重复值标记为True,取反后就刚好是我们要的“是否为最后一次出现”的标记:
import pandas as pd # 构造输入的DataFrame df = pd.DataFrame({ 'col_1': [1, 2, 1, 1, 3], 'col_2': ['A', 'B', 'C', 'D', 'E'] }) # 新增标记列 df['last_row_of_col_1'] = ~df.duplicated('col_1', keep='last')
方法2:分组后标记每组最后一行
按col_1分组,然后判断每行的索引是否是该组的最后一个索引:
df['last_row_of_col_1'] = df.groupby('col_1').transform(lambda x: x.index == x.index[-1])
两种方法都能得到目标结果,方法1的运行效率更高,适合处理大数据量的表格。
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

