Я хотел бы выбрать цикл данных в Python (в данном случае pandas, но это гибкая и повторяющаяся проблема) так, чтобы выбранные данные возвращались к началу данных для n начальных рядов. Я постоянно сталкиваюсь с этой проблемой, и, хотя у меня есть множество рабочих решений для нее, меня интересует, есть ли какой-нибудь встроенный метод для этого, о котором я не знаю?
Вот пример pandas DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame([[0,1],[2,3],[5,6],[7,8]],columns = ['x','y'])
Этот DataFrame, конечно, будет выглядеть так:
x y
0 0 1
1 2 3
2 5 6
3 7 8
Я нашел достаточно хорошее решение, чтобы создать массив индексов:
n = 1 #how far through the start of the dataframe to select
select = np.concatenate((range(len(df)),range(n)))
Результат select
будет:
array([0, 1, 2, 3, 0])
Если я сделаю df.x[select]
, я получу то, что ищу:
0 0
1 2
2 5
3 7
0 0
Name: x, dtype: int64
Есть ли какие-то функции в NumPy, pandas или любом другом модуле Python, которые позволили бы такой цикл выбора данных? Что-то вроде df.x[0:+1]
, которое будет работать аналогично df.x[0:-1]
вместо того, как оно работает сейчас? Или метод NumPy, который работает так же, как я заставляю np.arange()
работать, комбинируя его с np.concatenate()
? Как я уже упоминал, я постоянно сталкиваюсь с этой проблемой, и для такого удобного языка, как Python, это определенно кажется функцией, которая будет или должна существовать. Я что-то упустил или что-то забыл?
Изменить, чтобы уточнить запрос:
Метод, предложенный avloss , заключался в использовании np.tile
, т. Е. нужную степень простоты и обобщаемости я ищу, только она чрезмерна для приложений, которые я использую. Это случаи, когда вам нужно закрыть l oop данных cycli c либо для построения, либо для расчета (например, если вы сопоставляете наклоны начала и конца замкнутой кривой с использованием метода конечных разностей). В этих случаях вам нужно повторить только первые n точек данных в серии (где n обычно находится где-то между 1 и 3), чтобы закрыть расчет или построить цикл.