def my_groupby_regex(df:pd.DataFrame, by=None, regex=None):
if not by: return df
df2 = df.copy()
df2.loc[:,"new_index_by"] = df.index
for dato,i in zip(df2[by].iloc[:-1], df2.index[:-1]):
reg = re.compile(regex) if regex else re.compile(generate_regex(dato))
for other,i2 in zip(df2[by].iloc[i+1:], df2.index[i+1:]):
if reg.match(other):
if i < i2:
df2.loc[:,"new_index_by"][i2] = df2.loc[:,"new_index_by"][i]
else: