У меня на самом деле есть данные по 150 МБ ежедневных поминутных измерений на каждый день в течение двух лет.Я привел здесь пример данных.Я хочу создать новый фрейм данных с максимумом каждого дня с его отметкой времени.Мой пример данных:
DateTime Power
01-Aug-16 10:43:00.000 229.9607961
01-Aug-16 10:43:23.000 230.9030781
01-Aug-16 10:44:00.000 231.716212
01-Aug-16 10:45:00.000 232.4485882
01-Aug-16 10:46:00.000 233.2739154
02-Aug-16 09:42:00.000 229.6851724
02-Aug-16 09:43:00.000 230.9163998
02-Aug-16 09:43:06.000 230.9883337
02-Aug-16 09:44:00.000 231.2569098
02-Aug-16 09:49:00.000 229.5774805
02-Aug-16 09:50:00.000 229.8758693
02-Aug-16 09:51:00.000 229.9825204
03-Aug-16 10:09:00.000 231.3605982
03-Aug-16 10:10:00.000 231.6827163
03-Aug-16 10:11:00.000 231.1580262
03-Aug-16 10:12:00.000 230.4054286
03-Aug-16 10:13:00.000 229.6507959
03-Aug-16 10:13:02.000 229.6268353
03-Aug-16 10:14:00.000 230.4584964
03-Aug-16 10:15:00.000 230.9004206
03-Aug-16 10:16:00.000 231.189036
Мой текущий код:
max_per_day = df.groupby(pd.Grouper(key='time',freq='D')).max()
print(max_per_day)
Мой текущий вывод:
time
2016-08-01 237.243835
2016-08-02 239.658539
2016-08-03 237.424683
2016-08-04 236.790695
2016-08-05 240.163910
В настоящее время он выводит гггг: мм: дди значение.Но я хочу чч: мм (или чч: мм: сс) против каждого максимального значения.Я попытался следующий код:
max_pmpp_day = df.loc[df.groupby(pd.Grouper(freq='D')).idxmax().iloc[:,0]]
Вывод:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Int64Index'
Я попытался @jezrael ответить
df['DateTime'] = pd.to_datetime(df['time'])
s = df.groupby(pd.Grouper(key='DateTime', freq='D'))['Pmpp'].transform('max')
df = df[df['Pmpp'] == s]
print(df)
и вывод
time Pmpp DateTime
34 2016-08-01 11:11:00 237.243835 2016-08-01 11:11:00
434 2016-08-02 13:30:02 239.658539 2016-08-02 13:30:02
648 2016-08-03 12:39:00 237.424683 2016-08-03 12:39:00