Apakah ada cara untuk menyusun ulang kolom dalam bingkai data panda berdasarkan preferensi pribadi saya (yaitu tidak diurutkan menurut abjad atau numerik, tetapi lebih seperti mengikuti konvensi tertentu)?
Contoh sederhana:
frame = pd.DataFrame({
'one thing':[1,2,3,4],
'second thing':[0.1,0.2,1,2],
'other thing':['a','e','i','o']})
menghasilkan ini:
one thing other thing second thing
0 1 a 0.1
1 2 e 0.2
2 3 i 1.0
3 4 o 2.0
Tapi sebaliknya, saya ingin ini:
one thing second thing other thing
0 1 0.1 a
1 2 0.2 e
2 3 1.0 i
3 4 2.0 o
(Tolong, berikan solusi umum daripada khusus untuk kasus ini. Terima kasih banyak.)
Anda dapat menggunakan ini:
sumber
pandas
.pandas
v0.23`).Ini solusi yang sering saya gunakan. Ketika Anda memiliki kumpulan data yang besar dengan banyak kolom, Anda pasti tidak ingin mengatur ulang semua kolom secara manual.
Apa yang Anda bisa dan, kemungkinan besar, ingin lakukan adalah hanya mengurutkan beberapa kolom pertama yang sering Anda gunakan, dan membiarkan semua kolom lain menjadi dirinya sendiri. Ini adalah pendekatan umum di R.
df %>%select(one, two, three, everything())
Jadi, Anda bisa terlebih dahulu mengetikkan kolom yang ingin diurutkan dan diposisikan sebelum semua kolom lain dalam daftar
cols_to_order
.Kemudian Anda membuat daftar untuk kolom baru dengan menggabungkan kolom lainnya:
Setelah ini, Anda dapat menggunakan
new_columns
solusi lain yang disarankan.sumber
Anda juga bisa melakukan sesuatu seperti
df = df[['x', 'y', 'a', 'b']]
Juga, Anda bisa mendapatkan daftar kolom dengan:
Outputnya akan menghasilkan sesuatu seperti ini:
Yang kemudian mudah diatur ulang secara manual.
sumber
Bangunlah dengan daftar, bukan kamus
sumber
Anda juga dapat menggunakan OrderedDict:
sumber
Tambahkan parameter 'kolom':
sumber
Cobalah mengindeks (jadi Anda menginginkan solusi umum tidak hanya untuk ini, jadi urutan indeks bisa sesuai keinginan Anda):
Sekarang:
Adalah:
sumber
Menurut saya ini yang paling mudah dan berhasil:
sumber