Yanıtlar:
Doğru anlıyorsam, atama şunları doldurmalıdır:
>>> 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
boş, kullanmak isteyebilirsiniz df['new'] = pd.Series()
(aşağıda benim cevabını bakın)
DSM'nin cevabını eklemek ve bu ilişkili soru üzerine inşa etmek için , yaklaşımı iki duruma böldüm:
Tek bir sütun ekleme: Yalnızca yeni sütunlara boş değerler atayın, ör. df['C'] = np.nan
Birden çok sütun ekleme: Dataframe'in sütun dizinine yeni sütunlar eklemek için .reindex(columns=[...])
panda yöntemini kullanmanızı öneririm . Bu, ile birden çok yeni satır eklemek için de çalışır .reindex(rows=[...])
. Panda'nın daha yeni sürümlerinin (v> 0.20) axis
açıkça columns
veya öğesine atamak yerine bir anahtar kelime belirtmenize izin verdiğini unutmayın rows
.
Birden çok sütun ekleyen bir örnek:
mydf = mydf.reindex(columns = mydf.columns.tolist() + ['newcol1','newcol2'])
veya
mydf = mydf.reindex(mydf.columns.tolist() + ['newcol1','newcol2'], axis=1) # version > 0.20.0
Ayrıca her zaman yeni (boş) bir veri çerçevesini mevcut veri çerçevesine birleştirebilirsiniz, ancak bu bana pitonik gelmiyor :)
version >= 0.20.0
DataFrame'i siler ve yeni sütunları satır olarak ekler. İçin örnek version < 0.20.0
Pandalar Sürüm çalışmaları cezası0.24.1
, axis=1
de version = 0.25
. Cevabınızı güncellenmiş sürümü içerecek şekilde değiştirmeye çalıştım, ancak @kenlukas ve @il_raffa tarafından reddedildim. Umarım yanıtınızın neden onlar için işe yaramadığını anlamak için uğraşan herkes, benim gibi - en azından bu yoruma rastlar.
daha basit bir çözüm:
df = df.reindex(columns = header_list)
burada "header_list", görünmesini istediğiniz başlıkların listesidir.
Listede yer alan ve veri çerçevesinde henüz bulunmayan tüm üstbilgiler aşağıdaki boş hücrelerle eklenecektir.
yani eğer
header_list = ['a','b','c', 'd']
sonra c ve d boş hücreli sütunlar olarak eklenir
İle başlayarak v0.16.0
, DF.assign()
a'ya yeni sütunlar ( tek / çoklu ) atamak için kullanılabilir DF
. Bu sütunlar, sonuna alfabetik sırayla eklenir DF
.
Bu, doğrudan döndürülen veri çerçevesinde bir dizi zincirleme işlem gerçekleştirmek istediğiniz durumlarda basit atamaya kıyasla avantajlı hale gelir.
DF
@DSM tarafından gösterilen aynı örneği düşünün :
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
Bunun, yeni oluşturulan sütunlarla birlikte önceki tüm sütunlarla birlikte bir kopya döndürdüğünü unutmayın. Orijinalin DF
buna göre değiştirilebilmesi için şu şekilde kullanın: şu anda çalışmayı df = df.assign(...)
desteklemediğinden inplace
.
listeden sütun adı eklemek istiyorsanız
df=pd.DataFrame()
a=['col1','col2','col3','col4']
for i in a:
df[i]=np.nan
@ emunsing'in cevabı birden çok sütun eklemek için gerçekten harika, ancak python 2.7'de benim için çalışamadım. Bunun yerine şunu buldum:
mydf = mydf.reindex(columns = np.append( mydf.columns.values, ['newcol1','newcol2'])
Aşağıdaki kod, "Mevcut veri çerçeveme n sayıda boş sütun nasıl eklerim" sorusunu ele alır. Benzer sorunların çözümlerini tek bir yerde tutmak amacıyla buraya ekliyorum.
Yaklaşım 1 (1-64 arasında sütun adlarıyla 64 ek sütun oluşturmak için)
m = list(range(1,65,1))
dd=pd.DataFrame(columns=m)
df.join(dd).replace(np.nan,'') #df is the dataframe that already exists
Yaklaşım 2 (1-64 arası sütun adlarıyla 64 ek sütun oluşturmak için)
df.reindex(df.columns.tolist() + list(range(1,65,1)), axis=1).replace(np.nan,'')
Yapabilirsin
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
df.insert(index_to_insert_at, column_header, init_value)
Belirli bir dizine yeni sütun eklemek için kullanılabilir .
cost_tbl.insert(1, "col_name", "")
Yukarıdaki ifade, ilk sütundan sonra boş bir Sütun ekleyecektir.
N/A
mu yoksa daha doğrusu ?