Python 3.x 如何验证x天内每天是否存在ID?

Python 3.x 如何验证x天内每天是否存在ID?,python-3.x,pandas,list,loops,Python 3.x,Pandas,List,Loops,问题是数据集的每个ID的数据速率是可变的,我想过滤掉每天至少没有一个数据点的ID 我有一个包含ID、日期和数据的数据框,其中我计算了每个ID的每日采样率 dfcounted = df.reset_index().groupby(['id', pd.Grouper(key='datetime', freq='D')]).count().reset_index() 现在,我已经获取了数据帧的第一个和最后一个日期,并在开始日期和结束日期之间创建了每天的数据帧: # take dates sdate

问题是数据集的每个ID的数据速率是可变的,我想过滤掉每天至少没有一个数据点的ID

我有一个包含ID、日期和数据的数据框,其中我计算了每个ID的每日采样率

dfcounted = df.reset_index().groupby(['id', pd.Grouper(key='datetime', freq='D')]).count().reset_index()
现在,我已经获取了数据帧的第一个和最后一个日期,并在开始日期和结束日期之间创建了每天的数据帧:

# take dates
sdate = df['datetime'].min()   # start date
edate = df['datetime'].max()   # end date

# interval
delta = edate - sdate       # as timedelta

# empty list
dates = []

# store each date in list
for i in range(delta.days + 1):
    day = sdate + timedelta(days=i)
    dates.append(day)

# convert to dataframe 
dates = pd.DataFrame(data = dates, columns=["date"])
从这里开始,我不知道如何继续。我已经创建了一个示例数据帧

import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import random
import string

letters = string.ascii_lowercase
ids = random.choices(letters,k=100) 


date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(99), freq='D')

np.random.seed(seed=1111)
data = np.random.randint(1, high=100, size=len(days))

df = pd.DataFrame({'date': days,'ids': ids, 'data': data})
df = df.set_index('date')

对于示例df,我希望创建一个“结果”df,其中只包含每个日期中都有数据的ID。

因此,如果ID在
sdate
edate
之间的日期中没有数据点,您想过滤掉这些数据吗?没错!如果一个ID在某一天没有数据,它应该被过滤掉。我想你可以这样做,请告诉我逻辑是否合理——首先找出开始日期和结束日期之间的日期。然后对数据帧进行排序并执行
groupby().cumcount
任何不等于开始日期和结束日期之间天数的操作,都可以将其过滤掉。因此,如果ID在
sdate
edate
之间的日期中没有数据点,则要将其过滤掉吗?没错!如果一个ID在某一天没有数据,它应该被过滤掉。我想你可以这样做,请告诉我逻辑是否合理——首先找出开始日期和结束日期之间的日期。然后对数据帧进行排序,并执行
groupby().cumcount
任何不等于开始日期和结束日期之间天数的操作,您可以将其过滤掉。