pandas如何实现每个唯一标识符在指定日期范围逐行重复
实现方法
你需要的是两个数据集的笛卡尔积(全排列组合),可以用pandas的交叉合并功能实现,完整代码如下:
import pandas as pd # 你的原有基础代码 id = {'unique':[101,201,301]} id_df = pd.DataFrame(id) month = pd.date_range(start = '2020-01-01', end = '2021-1-01', freq='M') # 新增代码:将日期范围转为DataFrame month_df = pd.DataFrame(month, columns=['month']) # 交叉合并得到全组合结果 result = id_df.merge(month_df, how='cross')
执行后result就是符合要求的输出,3个ID × 12个月份,总共36行,每个ID对应每个月单独占一行。
如果你的pandas版本低于1.2.0(不支持how='cross'参数),可以用临时辅助键的方式实现相同效果:
# 给两个DataFrame加相同的临时列 id_df['tmp_key'] = 1 month_df['tmp_key'] = 1 # 按临时列合并后删除临时列 result = id_df.merge(month_df, on='tmp_key').drop('tmp_key', axis=1)
内容的提问来源于stack exchange,提问作者tfr950
相关产品推荐
相关产品推荐

