2014-10-11 14 views

Odpowiedz

20

Czy możesz zrobić coś takiego?

>>> import pandas as pd 
>>> df = pd.DataFrame(columns=['col1', 'col2']) 
>>> df = df.append(pd.Series(['a', 'b'], index=['col1','col2']), ignore_index=True) 
>>> df = df.append(pd.Series(['d', 'e'], index=['col1','col2']), ignore_index=True) 
>>> df 
    col1 col2 
0 a b 
1 d e 

Czy ktoś ma bardziej eleganckie rozwiązanie?

+1

Oto prostsze i głupie rozwiązanie: ' ' zaimportuj pandy jako pd df = pd.DataFrame() df = df.append ({'foo': 1, 'bar': 2}, ignore_index = True) # Pamiętaj, że to dołączenie nie występuje w miejsce. '' ' –

35

Oto proste i głupie rozwiązanie:

>>> import pandas as pd 
>>> df = pd.DataFrame() 
>>> df = df.append({'foo':1, 'bar':2}, ignore_index=True) 
+0

Co w tym głupiego? :) – Nabin

+3

Pamiętaj, że to jest dołączanie dykt, a nie lista – anthnyprschka

29

Czasami łatwiej jest zrobić wszystko, dołączanie poza pand, a następnie, po prostu stworzyć DataFrame w jednym ujęciu.

>>> import pandas as pd 
>>> list=[['a','b']] 
>>> list.append(['e','f']) 
>>> df=pd.DataFrame(list,columns=['col1','col2']) 
    col1 col2 
0 a b 
1 e f 
+0

bardzo elegancko, dziękuję –

15

obserwuję na odpowiedź Mike'a Chirico za ... jeśli chcesz dołączyć listę po dataframe już zaludnionej ...

>>> list = [['f','g']] 
>>> df = df.append(pd.DataFrame(list, columns=['col1','col2']),ignore_index=True) 
>>> df 
    col1 col2 
0 a b 
1 d e 
2 f g 
1

Jeśli chcesz dodać serie i użyć indeks series' jak kolumny DataFrame, trzeba tylko dołączyć szeregowo pomiędzy wspornikami:

In [1]: import pandas as pd 

In [2]: df = pd.DataFrame() 

In [3]: row=pd.Series([1,2,3],["A","B","C"]) 

In [4]: row 
Out[4]: 
A 1 
B 2 
C 3 
dtype: int64 

In [5]: df.append([row],ignore_index=True) 
Out[5]: 
    A B C 
0 1 2 3 

[1 rows x 3 columns] 

whitout ignore_index=True ty d nie można uzyskać odpowiedniego indeksu.

0
df = pd.DataFrame(columns=list("ABC")) 
df.loc[len(df)] = [1,2,3] 
Powiązane problemy