вращение списка только с использованием Pandas

#python #pandas

#python #pandas

Вопрос:

Мы все знакомы с классическим вопросом поворота списка влево, скажем:

 mylist = [1,2,3,4,5,6,7]

#rotate by two to the left
mylist[2:]   mylist[:2]

Out[4]: [3, 4, 5, 6, 7, 1, 2]
 

Теперь рассмотрим тот же список как Pandas серию.

 pdlist = pd.Series(mylist)
Out[8]: 
0    1
1    2
2    3
3    4
4    5
5    6
6    7
dtype: int64
 

Как я могу повернуть его таким же образом, используя только функции Pandas?

Спасибо!

Комментарии:

1. сдвиг может выполнять не функция Pandas, а функция numpy: pd.Series(np.roll(pdlist, -2)) в обычном python вы можете вращать с collections.deque помощью and rotate метода.

Ответ №1:

Использование:

 pdlist[2:].append(pdlist[:2])
 

Комментарии:

1. довольно мило. Мне было интересно, можно ли что-то сделать с .shift()

2. Я так не думаю (по крайней мере, не за один шаг) periods , потому что параметр принимает только целое число. Но, может быть, кто-то знает, как это сделать, ха-ха.

3. кто сказал, что это должно быть всего за один шаг? : D

4. pdlist.shift(-2).dropna().append(pdlist[:2]) ? Тем не менее, он все еще используется append . Я не мог придумать ни одного другого подхода с использованием pandas, который не увеличивал бы объем кода. Мне понравился numpy подход, упомянутый @sammywemmy.