Jawaban:
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
0 1 2
1 2 3
2 3 4
>>> df["C"] = ""
>>> df["D"] = np.nan
>>> df
A B C D
0 1 2 NaN
1 2 3 NaN
2 3 4 NaN
df
kosong, Anda mungkin ingin menggunakan df['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 menentukan axis
kata kunci dan bukannya secara eksplisit menetapkan columns
atau rows
.
Berikut ini contoh menambahkan beberapa kolom:
mydf = mydf.reindex(columns = mydf.columns.tolist() + ['newcol1','newcol2'])
atau
mydf = mydf.reindex(mydf.columns.tolist() + ['newcol1','newcol2'], axis=1) # version > 0.20.0
Anda juga dapat selalu menyatukan kerangka data baru (kosong) ke kerangka data yang ada, tetapi itu tidak terasa seperti pythonic bagi saya :)
version >= 0.20.0
menghapus DataFrame dan menambahkan kolom baru sebagai baris. Contoh untuk version < 0.20.0
karya yang bagus pada Versi Pandas0.24.1
, axis=1
di 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.
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
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 DF
contoh yang sama yang ditunjukkan oleh @DSM:
df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})
df
Out[18]:
A B
0 1 2
1 2 3
2 3 4
df.assign(C="",D=np.nan)
Out[21]:
A B C D
0 1 2 NaN
1 2 3 NaN
2 3 4 NaN
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 mendukung inplace
operasi saat ini.
jika Anda ingin menambahkan nama kolom dari daftar
df=pd.DataFrame()
a=['col1','col2','col3','col4']
for i in a:
df[i]=np.nan
@ 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:
mydf = mydf.reindex(columns = np.append( mydf.columns.values, ['newcol1','newcol2'])
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.reindex(df.columns.tolist() + list(range(1,65,1)), axis=1).replace(np.nan,'')
Anda dapat melakukan
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
Satu dapat digunakan df.insert(index_to_insert_at, column_header, init_value)
untuk menyisipkan kolom baru pada indeks tertentu.
cost_tbl.insert(1, "col_name", "")
Pernyataan di atas akan menyisipkan Kolom kosong setelah kolom pertama.
N/A
?