TransWikia.com

Создать список дат между списком интервалов

Stack Overflow на русском Asked by collob on January 5, 2021

У меня есть датафрейм, в котором имеются интервалы дат

   start         end
0  2020-02-14    2020-02-16
1  2020-03-08    2020-03-10
2  2020-03-17    2020-03-19
3  2020-04-12    2020-04-19
4  2020-05-01    2020-05-03

Мне нужно создать список дат, которые находятся в интервале между start и end в каждой строке

Например, для первых двух строк это будет : 2020-02-14, 2020-02-15, 2020-02-16, 2020-03-08, 2020-03-09, 2020-03-10

Я пробовал решить это через цикл, но он не заработал

list_of_dates = []
for i in range( len(df) ):
    start = df['start'][i]
    end = df['end'][i]
    new_date = pd.date_range( start, end, freq='d' )
    list_of_dates[i].append(new_date)

One Answer

Если у вас даты имеют типа datetime, то это сделать довольно просто (я перевел сразу date_range в список):

df["range"] = df.apply(lambda x: pd.date_range(start=x["start"], end=x["end"], freq="D")
                       .date.tolist(), axis=1)

тогда df у вас будет:

       start        end                                              range
0 2020-02-14 2020-02-16               [2020-02-14, 2020-02-15, 2020-02-16]
1 2020-03-08 2020-03-10               [2020-03-08, 2020-03-09, 2020-03-10]
2 2020-03-17 2020-03-19               [2020-03-17, 2020-03-18, 2020-03-19]
3 2020-04-12 2020-04-19  [2020-04-12, 2020-04-13, 2020-04-14, 2020-04-1...
4 2020-05-01 2020-05-03               [2020-05-01, 2020-05-02, 2020-05-03]

Answered by strawdog on January 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP