2014-11-25 2 views
14

Pandalara sütun ekleme konusunda bir sorunum var. DataFrame'im var, boyutsal nxk. Ve süreçte mx [1, n] boyutunda mx1 ile sütun eklemem gerekecek, ama ben m bilmiyorum.Farklı sütun sütun ekle pandalar

bunu yapmak deneyin:

df['Name column'] = data  
# type(data) = list 

sonucu:

AssertionError: Length of values does not match length of index 

farklı uzunlukta sütunları ekleyebilir miyim?

cevap

16

Kullanım concat ve geçiş axis=1 ve ignore_index=True:

In [38]: 

import numpy as np 
df = pd.DataFrame({'a':np.arange(5)}) 
df1 = pd.DataFrame({'b':np.arange(4)}) 
print(df1) 
df 
    b 
0 0 
1 1 
2 2 
3 3 
Out[38]: 
    a 
0 0 
1 1 
2 2 
3 3 
4 4 
In [39]: 

pd.concat([df,df1], ignore_index=True, axis=1) 
Out[39]: 
    0 1 
0 0 0 
1 1 1 
2 2 2 
3 3 3 
4 4 NaN 
+0

@TheRedPea Düzenlemenizi geri aldım, önerileriniz benim cevabımın düzenlemesi yerine bir yorum olmalıydı, çünkü düzenlemeler bir cevabı iyileştirmek veya düzeltmek için kullanılmalı, alternatif yanıtlar önermek için değil – EdChum

+0

gelişme iyilesme duzelme ilerleme. Alternatif olduğunu düşünüyorsanız, ayrı bir cevap gönderirim. –

22

Eğer kabul cevabı kullanırsanız kabul edilen yanıt gösterilen örnek ve documentation (vurgu açıklandığı gibi, siz, sütun adlarını kaybedersiniz) eklendi: Ortaya çıkan eksen etiketlenecek

0, ..., n - 1. Bu birleştirme ekseni değil HAV yapar bitiştirmek nesnelerdir kullanışlıdır anlamlı indeksleme bilgisi. Sütun adlarınızın ('Name column') anlamlı olduğu anlaşılıyor.

Sen pandas.concat kullanabilirsiniz

ancak yapamazignore_index (ignore_index varsayılan değeri false olduğu; yani tamamen bu iddiayı atlayabilirsiniz):

import pandas 

# Note these columns have 3 rows of values: 
original = pandas.DataFrame({ 
    'Age':[10, 12, 13], 
    'Gender':['M','F','F']}) 

# Note this column has 4 rows of values: 
additional = pandas.DataFrame({ 
    'Name': ['Nate A', 'Jessie A', 'Daniel H', 'John D'] 
}) 

new = pandas.concat([original, additional], axis=1) 
# Identical: 
# new = pandas.concat([original, additional], ignore_index=False, axis=1) 

print(new.head()) 

#   Age  Gender  Name 
#0   10    M  Nate A 
#1   12    F Jessie A 
#2   13    F Daniel H 
#3   NaN   NaN  John D 

Bildirimi John D bir Yaş olmadan veya nasıl Bir Cinsiyet.

İlgili konular