Saya ingin menggeser kolom dalam Pandas DataFrame
, tetapi saya belum dapat menemukan metode untuk melakukannya dari dokumentasi tanpa menulis ulang seluruh DF. Apakah ada yang tahu bagaimana melakukannya? DataFrame:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Output yang diinginkan:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Jawaban:
sumber
df['x2'] = np.roll(df['x2'], 1)
Anda perlu menggunakan di
df.shift
sini.df.shift(i)
menggeser seluruh kerangka data dengani
unit ke bawah.Jadi, untuk
i = 1
:Memasukkan:
Keluaran:
Jadi, jalankan skrip ini untuk mendapatkan hasil yang diharapkan:
sumber
Mari tentukan kerangka data dari contoh Anda dengan
Kemudian Anda dapat memanipulasi indeks kolom kedua dengan
dan terakhir menggabungkan kembali satu kolom
Mungkin tidak cepat tapi mudah dibaca. Pertimbangkan untuk mengatur variabel untuk nama kolom dan shift aktual yang diperlukan.
Sunting: Pergeseran secara umum dimungkinkan oleh
df[2].shift(1)
seperti yang telah diposting tetapi apakah itu memotong sisa.sumber
Jika Anda tidak ingin kehilangan kolom yang Anda geser melewati akhir kerangka data Anda, cukup tambahkan nomor yang diperlukan terlebih dahulu:
sumber
Saya kira impor
Pertama tambahkan baris baru dengan
NaN, NaN,...
di akhir DataFrame (df
).Ini akan membuat DF df2 baru. Mungkin ada cara yang lebih elegan tapi ini berhasil.
Sekarang Anda bisa menggesernya:
sumber
Mencoba menjawab masalah pribadi dan serupa dengan masalah Anda, saya menemukan di Pandas Doc apa yang menurut saya akan menjawab pertanyaan ini:
Harapan untuk membantu pertanyaan masa depan dalam masalah ini.
sumber
Inilah cara saya melakukannya:
Pada dasarnya saya membuat dataframe kosong dengan indeks yang diinginkan dan kemudian menggabungkannya. Tetapi saya sangat ingin melihat ini sebagai fitur standar pada panda, jadi saya telah mengusulkan peningkatan pada panda.
sumber