如何为时间序列数据中每个用户的前3天设置value列为NaN?
实现每个用户前3天数据的Value列置为NaN
针对你的时间序列数据需求,可通过以下步骤用Pandas实现:
转换时间列类型
首先确保timestamp列是可运算的datetime格式:import pandas as pd df['timestamp'] = pd.to_datetime(df['timestamp'])分组处理每个用户的前3天数据
按person分组,对每个组计算其最早记录时间,再筛选出该时间点后3天内的行,将对应value设为NaN:def process_group(group): # 获取当前用户的最早记录时间 earliest_time = group['timestamp'].min() # 计算3天后的时间阈值 threshold = earliest_time + pd.Timedelta(days=3) # 把阈值内的value设为NaN group.loc[group['timestamp'] < threshold, 'value'] = pd.NA return group # 应用分组处理 df = df.groupby('person', group_keys=False).apply(process_group)
补充说明
- 这里的"前3天"是从每个用户的第一条记录时间开始计算的72小时区间,完全适配不同用户起止时间不同的场景。
- 如果需要按自然日(比如从第一条记录的当日0点开始算3个自然日),可以将
earliest_time调整为当日0点:earliest_time = group['timestamp'].min().normalize()
内容的提问来源于stack exchange,提问作者prof32
相关产品推荐
相关产品推荐

