Циклический просмотр кадра данных pandas для генерации диапазона дат - PullRequest
1 голос
/ 21 октября 2019

У меня есть кадр данных, как показано здесь: enter image description here

Для каждого диапазона ' От ' до ' К ', Iхочу создать date_range. Поэтому я перебираю данные. Для каждой строки создается сгенерированный DatetimeIndex.

Я пытался преобразовать это в фрейм данных и добавить его в пустой фрейм данных, поэтому у меня есть общий диапазон. Но окончательный фрейм данных (day_wise) оказывается пустым! Так что не уверен, в чем проблема.

day_wise = pd.DataFrame(columns=['day'])
for index, row in elec_ds.iterrows():
  for_day = pd.date_range(start=row['From'], end=row['To'], freq='D')
  for_day = pd.DataFrame(for_day)
  day_wise.append(for_day)

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете полностью избежать цикла for. Предполагая, что вы используете pandas v0.25 или более поздней версии, вы можете использовать explode:

day_wise = df.apply(lambda row: pd.date_range(row['From'], row['To']), axis=1) \
                .explode() \
                .to_frame('Day')

Результат:

    Day
0   2018-10-23
0   2018-10-24
0   2018-10-25
0   2018-10-26
0   2018-10-27

Объяснение:

  • apply(lambda ..., axis=1) делает диапазон дат из столбцов From и To каждой строки
  • explode разбивает диапазон на отдельные дни
  • to_frame преобразует ряд в DataFrame
...