Apakah Anda benar-benar menginginkan kolom berisi string kosong atau lebih tepatnya N/A?
Filmor
Jawaban:
420
Jika saya mengerti dengan benar, tugas harus mengisi:
>>>import numpy as np
>>>import pandas as pd
>>> df = pd.DataFrame({"A":[1,2,3],"B":[2,3,4]})>>> df
A B
012123234>>> df["C"]="">>> df["D"]= np.nan
>>> df
A B C D
012NaN123NaN234NaN
Jawaban ini baru saja membuat baris baru untuk saya.
logicbloke
@logicbloke dapatkah Anda memberikan contoh di mana ini terjadi?
craymichael
@craymichael Sudah lama tapi saya percaya saya memiliki kolom nomor indeks tanpa nama dan nama baris dan itu baru saja membuat baris baru di akhir.
logicbloke
1
Jika dfkosong, Anda mungkin ingin menggunakan df['new'] = pd.Series() (lihat jawaban saya di bawah)
Carsten
bagaimana cara menambahkan beberapa kolom kosong?
M. Mariscal
46
Untuk menambah jawaban DSM dan membangun pertanyaan terkait ini , saya membagi pendekatan menjadi dua kasus:
Menambahkan satu kolom: Cukup tetapkan nilai kosong ke kolom baru, mis df['C'] = np.nan
Menambahkan beberapa kolom: Saya sarankan menggunakan .reindex(columns=[...])metode panda untuk menambahkan kolom baru ke indeks kolom dataframe. Ini juga berfungsi untuk menambahkan beberapa baris baru dengan .reindex(rows=[...]). Perhatikan bahwa versi Pandas yang lebih baru (v> 0,20) memungkinkan Anda menentukan axiskata kunci dan bukannya secara eksplisit menetapkan columnsatau rows.
Contoh untuk version >= 0.20.0menghapus DataFrame dan menambahkan kolom baru sebagai baris. Contoh untuk version < 0.20.0karya yang bagus pada Versi Pandas0.24.1
Lalo
@emunsing Saat mencari jawaban untuk pertanyaan ini, saya akhirnya menemukan jawaban Anda bermanfaat. Pada awalnya, bagaimanapun, itu tidak bekerja untuk saya karena panda membutuhkan , axis=1di version = 0.25. Saya mencoba mengubah jawaban Anda untuk memasukkan versi yang diperbarui, tetapi saya ditolak oleh @kenlukas dan @il_raffa. Saya harap semua orang berjuang untuk memahami mengapa tanggapan Anda tidak bekerja untuk mereka - seperti saya - setidaknya datang di komentar ini.
Griff
@ Griff - Sekarang saya telah memperbarui jawaban saya untuk menjadi lebih akurat dan eksplisit tentang masalah kompatibilitas versi. Terima kasih telah menyoroti ini.
emunsing
35
solusi yang lebih sederhana adalah:
df = df.reindex(columns = header_list)
di mana "header_list" adalah daftar tajuk yang ingin Anda tampilkan.
setiap header yang termasuk dalam daftar yang belum ditemukan dalam kerangka data akan ditambahkan dengan sel kosong di bawah ini.
jadi jika
header_list =['a','b','c','d']
maka c dan d akan ditambahkan sebagai kolom dengan sel kosong
Lebih tepatnya, kolom akan ditambahkan dengan NaNs.
broccoli2000
19
Mulai dengan v0.16.0, DF.assign()dapat digunakan untuk menetapkan kolom baru ( tunggal / ganda ) ke a DF. Kolom-kolom ini dimasukkan dalam urutan abjad di akhir halaman DF.
Ini menjadi menguntungkan dibandingkan dengan penugasan sederhana dalam kasus-kasus di mana Anda ingin melakukan serangkaian operasi berantai langsung pada kerangka data yang dikembalikan.
Pertimbangkan DFcontoh yang sama yang ditunjukkan oleh @DSM:
df = pd.DataFrame({"A":[1,2,3],"B":[2,3,4]})
df
Out[18]:
A B
012123234
df.assign(C="",D=np.nan)Out[21]:
A B C D
012NaN123NaN234NaN
Perhatikan bahwa ini mengembalikan salinan dengan semua kolom sebelumnya bersama dengan yang baru dibuat. Agar yang asli DFdimodifikasi sesuai, gunakan seperti:df = df.assign(...) karena tidak mendukung inplaceoperasi saat ini.
@ emunsing's jawabannya sangat keren untuk menambahkan beberapa kolom, tetapi saya tidak bisa membuatnya bekerja untuk saya di python 2.7. Sebaliknya, saya menemukan ini berfungsi:
Kode di bawah ini menjawab pertanyaan "Bagaimana cara menambahkan n jumlah kolom kosong ke kerangka data yang ada". Demi menjaga solusi untuk masalah serupa di satu tempat, saya menambahkannya di sini.
Pendekatan 1 (untuk membuat 64 kolom tambahan dengan nama kolom dari 1-64)
m = list(range(1,65,1))
dd=pd.DataFrame(columns=m)
df.join(dd).replace(np.nan,'')#df is the dataframe that already exists
Pendekatan 2 (untuk membuat 64 kolom tambahan dengan nama kolom dari 1-64)
df['column']=None#This works. This will create a new column with None type
df.column =None#This will work only when the column is already present in the dataframe
N/A
?Jawaban:
Jika saya mengerti dengan benar, tugas harus mengisi:
sumber
df
kosong, Anda mungkin ingin menggunakandf['new'] = pd.Series()
(lihat jawaban saya di bawah)Untuk menambah jawaban DSM dan membangun pertanyaan terkait ini , saya membagi pendekatan menjadi dua kasus:
Menambahkan satu kolom: Cukup tetapkan nilai kosong ke kolom baru, mis
df['C'] = np.nan
Menambahkan beberapa kolom: Saya sarankan menggunakan
.reindex(columns=[...])
metode panda untuk menambahkan kolom baru ke indeks kolom dataframe. Ini juga berfungsi untuk menambahkan beberapa baris baru dengan.reindex(rows=[...])
. Perhatikan bahwa versi Pandas yang lebih baru (v> 0,20) memungkinkan Anda menentukanaxis
kata kunci dan bukannya secara eksplisit menetapkancolumns
ataurows
.Berikut ini contoh menambahkan beberapa kolom:
atau
Anda juga dapat selalu menyatukan kerangka data baru (kosong) ke kerangka data yang ada, tetapi itu tidak terasa seperti pythonic bagi saya :)
sumber
version >= 0.20.0
menghapus DataFrame dan menambahkan kolom baru sebagai baris. Contoh untukversion < 0.20.0
karya yang bagus pada Versi Pandas0.24.1
, axis=1
diversion = 0.25
. Saya mencoba mengubah jawaban Anda untuk memasukkan versi yang diperbarui, tetapi saya ditolak oleh @kenlukas dan @il_raffa. Saya harap semua orang berjuang untuk memahami mengapa tanggapan Anda tidak bekerja untuk mereka - seperti saya - setidaknya datang di komentar ini.solusi yang lebih sederhana adalah:
di mana "header_list" adalah daftar tajuk yang ingin Anda tampilkan.
setiap header yang termasuk dalam daftar yang belum ditemukan dalam kerangka data akan ditambahkan dengan sel kosong di bawah ini.
jadi jika
maka c dan d akan ditambahkan sebagai kolom dengan sel kosong
sumber
Mulai dengan
v0.16.0
,DF.assign()
dapat digunakan untuk menetapkan kolom baru ( tunggal / ganda ) ke aDF
. Kolom-kolom ini dimasukkan dalam urutan abjad di akhir halamanDF
.Ini menjadi menguntungkan dibandingkan dengan penugasan sederhana dalam kasus-kasus di mana Anda ingin melakukan serangkaian operasi berantai langsung pada kerangka data yang dikembalikan.
Pertimbangkan
DF
contoh yang sama yang ditunjukkan oleh @DSM:Perhatikan bahwa ini mengembalikan salinan dengan semua kolom sebelumnya bersama dengan yang baru dibuat. Agar yang asli
DF
dimodifikasi sesuai, gunakan seperti:df = df.assign(...)
karena tidak mendukunginplace
operasi saat ini.sumber
Saya suka:
Jika Anda memiliki kerangka data kosong, solusi ini memastikan bahwa tidak ada baris baru yang hanya berisi
NaN
ditambahkan.Jika
dtype
tidak ditentukan, versi Pandas yang lebih baru menghasilkan aDeprecationWarning
.sumber
jika Anda ingin menambahkan nama kolom dari daftar
sumber
@ emunsing's jawabannya sangat keren untuk menambahkan beberapa kolom, tetapi saya tidak bisa membuatnya bekerja untuk saya di python 2.7. Sebaliknya, saya menemukan ini berfungsi:
sumber
Kode di bawah ini menjawab pertanyaan "Bagaimana cara menambahkan n jumlah kolom kosong ke kerangka data yang ada". Demi menjaga solusi untuk masalah serupa di satu tempat, saya menambahkannya di sini.
Pendekatan 1 (untuk membuat 64 kolom tambahan dengan nama kolom dari 1-64)
Pendekatan 2 (untuk membuat 64 kolom tambahan dengan nama kolom dari 1-64)
sumber
Anda dapat melakukan
sumber
Satu dapat digunakan
df.insert(index_to_insert_at, column_header, init_value)
untuk menyisipkan kolom baru pada indeks tertentu.Pernyataan di atas akan menyisipkan Kolom kosong setelah kolom pertama.
sumber