У меня есть следующий фрейм данных:
df = pd.DataFrame({"a":[1,2,3,4,5], "b":[3,2,1,2,2], "c": [2,1,0,2,1]})
a b c
0 1 3 2
1 2 2 1
2 3 1 0
3 4 2 2
4 5 2 1
и я хочу сместить столбцы a и b с индексами от 0 до 2. Т.е. мой желаемый результат -
a b c
0 NaN NaN 2
1 1 3 1
2 2 2 0
3 4 1 2
4 5 2 1
Если я сделаю
df[["a", "b"]][0:3] = df[["a", "b"]][0:3].shift(1)
и посмотрю на df
, похоже, он не изменился.
Однако, если выбрать только строки или столбцы, это работает:
Один столбец, выберите подмножество строк:
df["a"][0:3] = df["a"][0:3].shift(1)
Вывод:
a b c
0 NaN 3 2
1 1.0 2 1
2 2.0 1 0
3 4.0 2 2
4 5.0 2 1
Аналогично, если я выберу список столбцов, но все строки , он тоже будет работать, как и ожидалось:
df[["a", "b"]] = df[["a", "b"]].shift(1)
output:
a b c
0 NaN NaN 2
1 1.0 3.0 1
2 2.0 2.0 0
3 3.0 1.0 2
4 4.0 2.0 1
Почему df[["a", "b"]][0:3] = df[["a", "b"]][0:3].shift(1)
не работает должным образом? я что-то упустил?