Chciałbym przesunąć kolumnę w Pandach DataFrame
, ale nie udało mi się znaleźć metody na zrobienie tego z dokumentacji bez przepisywania całego DF. Czy ktoś wie, jak to zrobić? Ramka danych:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Pożądane wyjście:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Odpowiedzi:
źródło
df['x2'] = np.roll(df['x2'], 1)
Musisz użyć
df.shift
tutaj.df.shift(i)
przesuwa w dół całą ramkę danych oi
jednostki.A więc za
i = 1
:Wejście:
Wynik:
Więc uruchom ten skrypt, aby uzyskać oczekiwany wynik:
źródło
Pozwala zdefiniować ramkę danych z Twojego przykładu przez
Następnie możesz manipulować indeksem drugiej kolumny za pomocą
i na koniec ponownie połącz pojedyncze kolumny
Być może nie jest szybkie, ale łatwe do odczytania. Rozważ ustawienie zmiennych dla nazw kolumn i rzeczywistego wymaganego przesunięcia.
Edycja: Generalnie przesunięcie jest możliwe przez
df[2].shift(1)
już opublikowane, ale spowodowałoby to odcięcie przeniesienia.źródło
Jeśli nie chcesz stracić kolumn, które przesuwasz poza koniec ramki danych, po prostu dodaj najpierw wymaganą liczbę:
źródło
Przypuszczam, że import
Najpierw dołącz nowy wiersz z
NaN, NaN,...
na końcu DataFrame (df
).Stworzy nowy DF df2. Może jest bardziej elegancki sposób, ale to działa.
Teraz możesz to zmienić:
źródło
Próbując odpowiedzieć na problem osobisty i podobny do twojego, znalazłem na Pandas Doc to, co myślę, że odpowiedziałoby na to pytanie:
Mam nadzieję, że pomogę w przyszłych pytaniach w tej sprawie.
źródło
Oto jak to robię:
Zasadniczo generuję pustą ramkę danych z żądanym indeksem, a następnie po prostu łączę je razem. Ale naprawdę chciałbym zobaczyć to jako standardową funkcję w pandach, więc zaproponowałem ulepszenie pand.
źródło