我有一个如下所示的数据框
df = pd.DataFrame({
'subject_id':[1,1,1,1,1,1,1,2,2,2,2,2],
'time_1' :['2173-04-03 12:35:00','2173-04-03 12:50:00','2173-04-05
12:59:00','2173-05-04 13:14:00','2173-05-05 13:37:00','2173-07-06
13:39:00','2173-07-08 11:30:00','2173-04-08 16:00:00','2173-04-09
22:00:00','2173-04-11 04:00:00','2173- 04-13 04:30:00','2173-04-14 08:00:00'],
'val' :[5,5,5,5,1,6,5,5,8,3,4,6]})
df['time_1'] = pd.to_datetime(df['time_1'])
df['day'] = df['time_1'].dt.day
df['month'] = df['time_1'].dt.month
从上面的数据框中可以看出,两者之间缺少的日期很少。我想为这些日期创建新记录并填写上一行的值
def dt(df):
r = pd.date_range(start=df.date.min(), end=df.date.max())
df.set_index('date').reindex(r)
new_df = df.groupby(['subject_id','month']).apply(dt)
这会生成所有日期。我只想在每个月的每个主题的输入日期间隔内找到缺失的日期
我确实尝试了此相关帖子中的代码。虽然它帮助了我,但并没有让我得到这个更新/新要求的预期输出。当我们进行左连接时,它会复制所有记录。我也不能进行内部连接,因为它会删除不匹配的列。我想要混合左连接和内连接
目前它为一年中的所有 365 天创建了我不想要的新记录。如下所示。这不是预期的
我只想在输入日期间隔之间添加缺失的日期,如下所示。例如主题 = 1,在第 4 个月有来自第 3 和第 5 的记录。但缺少第 4 个。因此,我们仅添加第 4 天的记录。与当前输出不同,我们不需要第 6、第 7 等。同样在第 7 个月,记录第 7 天失踪。所以我们只需为此添加一条新记录
我希望我的输出如下所示

