df.set_index('date', inplace = True)
unnesting(df.resample('10T')['ip'].unique().reset_index(), ['ip']).reset_index(drop = True)
Сначала вам нужно установить дату на ваш индекс.Затем вам нужно пересчитать время с шагом в 10 минут, посмотреть на столбец IP и получить уникальные значения для каждого промежутка времени.Затем вам нужно удалить из списков, созданных unique()
, используя следующую функцию.
##https://stackoverflow.com/questions/53218931/how-to-unnest-explode-a-column-in-a-pandas-dataframe/55839330#55839330
def unnesting(df, explode):
idx = df.index.repeat(df[explode[0]].str.len())
df1 = pd.concat([
pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1)
df1.index = idx
return df1.join(df.drop(explode, 1), how='left')
После этого вы можете объединить все, что планировали.
РЕДАКТИРОВАТЬ :
# Set index to the date column
df.set_index('date', inplace = True)
# 10 minutes in nanoseconds
ns10min=10*60*1000000000
#Calculate the new 10 min.
df.index = pd.to_datetime(((df.index.astype(np.int64) // ns10min) * ns10min))
#Groupby both index and ip, then look at the first.
df.groupby([df.index, df['ip']]).first()