如何使用pandas按count列对表解聚并为日期拼接随机时间?
实现方法
核心解聚逻辑
pandas内置的repeat()方法可以直接实现按指定列数值重复行的需求,刚好匹配你要的解聚场景,不用写复杂的循环逻辑。
完整实现代码
首先导入依赖,构造示例数据:
import pandas as pd import numpy as np # 构造示例数据 df = pd.DataFrame({ 'user_id': [1, 2, 1], 'date': ['1/1/2021', '1/1/2021', '1/2/2021'], 'count': [4, 7, 3] })
执行解聚操作:
# 按count列的数值重复对应行,同时重置索引 df_exploded = df.loc[df.index.repeat(df['count'])].reset_index(drop=True)
生成带随机时间的最终字段:
# 先把原始日期列转为datetime格式 df_exploded['date'] = pd.to_datetime(df_exploded['date']) # 生成0-86399的随机整数,对应一天24小时的总秒数 random_seconds = np.random.randint(0, 86400, size=len(df_exploded)) # 拼接随机时间生成date_time字段 df_exploded['date_time'] = df_exploded['date'] + pd.to_timedelta(random_seconds, unit='s') # 仅保留要求输出的两个字段 result = df_exploded[['user_id', 'date_time']]
注意事项
- 如果count列存在0值,可以先加过滤逻辑
df = df[df['count'] > 0],避免生成无效空行 - 如果需要限定随机时间的范围(比如仅早8点到晚10点),调整
random_seconds的生成区间即可
内容的提问来源于stack exchange,提问作者Callum Matthews
相关产品推荐
相关产品推荐

