Есть временные ряды (ц), индексированные DatatimeIndex, хотите сгруппировать его по 10 минутКак группировать временные ряды на 10 минут с помощью панд?
index x y z
ts1 ....
ts2 ....
...
Я знаю, как группа 1 минуту
def group_by_minute(timestamp):
year = timestamp.year
month = timestamp.month
day = timestamp.day
hour = timestamp.hour
minute = timestamp.minute
return datetime.datetime(year, month, day, hour, minute)
затем
ts.groupby(group_by_minute, axis=0)
моя индивидуальная функция (примерно)
def my_function(group):
first_latitude = group['latitude'].sort_index().head(1).values[0]
last_longitude = group['longitude'].sort_index().tail(1).values[0]
return first_latitude - last_longitude
поэтому ц DataFrame должен определенно содержит 'широту' и 'долгота' столбцы
При использовании TimeGrouper
ts.groupby(pd.TimeGrouper(freq='100min')).apply(my_function)
я получил следующие ошибки,
TypeError: cannot concatenate a non-NDFrame object
Вы пробовали 'resample'? Например. 'df.resample ('1min', 'mean')' Какую агрегацию вы делаете – JoeCondron
@JoeCondron Я применяю настраиваемые функции с помощью функции APPLY. Мне кажется, что resample или TimeGrouper автоматически заполняет этот пробел, даже существует промежуток времени в один год. Есть ли способ предотвратить это? Большое спасибо –
Вы можете передать свою пользовательскую функцию, например: 'df.resample ('10min', how = my_func)'. Он не заполнит пробелы, если вы не сообщите об этом. Возможно, вам следует отправить функцию, которую вы хотите передать, и желаемый результат. В качестве альтернативы вы можете настроить последнюю строку своей функции на «минута = 10 * (минута/10)». – JoeCondron