Pandas - заполнить датафрам диапазоном дат - PullRequest
3 голосов
/ 25 февраля 2020

Предполагая, что это мой df:

  Name1    Name2       date 
1 John     Jay   2015-01-01 06:01:00
2 Sara     Debra 2015-01-01 06:05:00
3 Ben      Beth  2015-01-01 06:09:00 

Я хочу заполнить df, где каждая строка должна дублироваться и увеличиваться на 1 минуту, пока не достигнет следующей строки, поэтому вывод должен быть:

  Name1    Name2       date 
1 John     Jay   2015-01-01 06:01:00
1 John     Jay   2015-01-01 06:02:00
1 John     Jay   2015-01-01 06:03:00
1 John     Jay   2015-01-01 06:04:00
2 Sara     Debra 2015-01-01 06:05:00
2 Sara     Debra 2015-01-01 06:06:00
3 Ben      Beth  2015-01-01 06:07:00 

Я посмотрел на date_range, но я не нашел подходящего способа сделать это без уродливого и неэффективного для l oop.

Любая помощь будет оценена!

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Попробуйте:

df.resample('60S', on='date').pad()

Это простой случай повышения дискретизации, за которым следует pad() для заполнения пропущенных значений.

2 голосов
/ 25 февраля 2020

Если все даты являются уникальными, вы можете использовать DataFrame.asfreq:

df['date'] = pd.to_datetime(df['date'])

df1 = (df.set_index('date')
         .asfreq('Min', method='ffill')
         .reset_index().reindex(df.columns, axis=1))

Для меня решение с DataFrame.resample, работающее с DatetimeIndex и Resampler.ffill:

df1 = df.set_index('date').resample('1Min').ffill().reset_index().reindex(df.columns, axis=1)

print (df1)
  Name1  Name2                date
0  John    Jay 2015-01-01 06:01:00
1  John    Jay 2015-01-01 06:02:00
2  John    Jay 2015-01-01 06:03:00
3  John    Jay 2015-01-01 06:04:00
4  Sara  Debra 2015-01-01 06:05:00
5  Sara  Debra 2015-01-01 06:06:00
6  Sara  Debra 2015-01-01 06:07:00
7  Sara  Debra 2015-01-01 06:08:00
8   Ben   Beth 2015-01-01 06:09:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...