#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
помощью androtate
метода.
Ответ №1:
Использование:
pdlist[2:].append(pdlist[:2])
Комментарии:
1. довольно мило. Мне было интересно, можно ли что-то сделать с
.shift()
2. Я так не думаю (по крайней мере, не за один шаг)
periods
, потому что параметр принимает только целое число. Но, может быть, кто-то знает, как это сделать, ха-ха.3. кто сказал, что это должно быть всего за один шаг? : D
4.
pdlist.shift(-2).dropna().append(pdlist[:2])
? Тем не менее, он все еще используетсяappend
. Я не мог придумать ни одного другого подхода с использованием pandas, который не увеличивал бы объем кода. Мне понравилсяnumpy
подход, упомянутый @sammywemmy.