处理带时间列的Pandas Dataframe:去重间隔1天内数据并生成标签列
下面是可直接运行的实现方案,针对大型DataFrame用的都是向量化操作,性能足够:
步骤1:导入依赖&转换时间列格式
首先确保时间列是Pandas的datetime类型,才能正确计算日期间隔:
import pandas as pd # 替换为你实际的时间列名,这里对应示例的'Time Column' df['Time Column'] = pd.to_datetime(df['Time Column'])
步骤2:去除重复日期
按需求保留每组重复日期的第一条记录:
# 按时间列去重,保留第一个出现的值 df = df.drop_duplicates(subset='Time Column', keep='first').reset_index(drop=True)
步骤3:筛选符合间隔要求的记录
判断当前行和上一行的日期间隔,仅保留间隔超过1天的记录,完全匹配示例中23日留、24日删的规则:
# 计算当前行与上一行的时间差,单位为天 day_diff = df['Time Column'].diff().dt.days # 生成筛选掩码:第一行默认保留,后续行仅保留和上一行间隔超过1天的 keep_mask = (day_diff > 1) | day_diff.isna() # 筛选得到目标数据 df_result = df[keep_mask].reset_index(drop=True)
步骤4:新增Label列
按时间顺序生成L+递增序号的标签:
df_result['Label'] = 'L' + (df_result.index + 1).astype(str)
最终输出的df_result就是符合要求的结果,和你给出的示例完全匹配。如果时间列带时分秒需要按自然日判断间隔,仅需要把时间差计算逻辑改成df['Time Column'].dt.date.diff().dt.days即可。
内容的提问来源于stack exchange,提问作者Stan
相关产品推荐
相关产品推荐

