import pandas as pd
df = pd.DataFrame({'Week Number': 1, 'Weekday': ['Monday'] * 4 + ['Tuesday'] * 4, 'Time':['09.00', '12.00', '14.00', '15.00'] * 2,
'Speed': [2, 4] * 4})
Предполагая, что times
, days
и week_nums
- все значения, на которые можно расширить DataFrame
times = ['08.00', '09.00', '10.00', '11.00', '12.00', '13.00', '14.00', '15.00']
days = ['Monday', 'Tuesday']
week_nums = [1]
Создать DataFrame из всех возможных комбинаций с помощью Speed = 0
from itertools import product
df_combinations = pd.DataFrame(list(product(, days, times, [0])), columns=['Week Number', 'Weekday', 'Time', 'Speed'])
Объединить оба кадра данных (df_combinations
должен быть вторым для удаления дубликатов!)
df_new = pd.concat([df, df_combinations], ignore_index=True, sort=False)
Создать двоичную маску дубликатов, удалить их и отсортировать кадр данных
df_new = df_new[~df_new.duplicated(subset=['Week Number', 'Weekday', 'Time'], keep='first')]
df_new.sort_values(['Week Number', 'Weekday', 'Time'])