Чтобы применить функцию, аналогичную вашей, к каждой паре ключ-значение в словаре, мы должны выполнить итерацию по словарю, передавая пары ключ-значение, так как функция возвращает df, после чего мы конкатируем dfs, когда они возвращаются
df2 = pd.DataFrame(columns = columns)
for key, value in d.items():
temp_df = function_to_apply(key, value)
df2 = pd.concat([df2, temp_df])
Словарь, который вы будете использовать, может нуждаться в преобразовании, чтобы получить желаемые результаты.