2014-10-11 16 views

risposta

20

Potresti fare qualcosa del genere?

>>> 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 

Qualcuno ha una soluzione più elegante?

+1

Ecco una soluzione più semplice e muto: '' ' import panda come pd df = pd.DataFrame() df = df.append ({'foo': 1, 'bar': 2}, ignore_index = True) # Nota che questo accodamento non si verifica in posto. '' ' –

35

Ecco una soluzione semplice e muto:

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

Cosa c'è di stupido a riguardo? :) – Nabin

+3

Si noti che questo è l'aggiunta di un dict, non di un elenco – anthnyprschka

29

A volte è più facile da fare tutto l'apposizione di fuori di panda, poi, basta creare il dataframe in un solo colpo.

>>> 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

molto elegante, grazie –

15

seguito sulla risposta di Mike Chirico ... se si desidera aggiungere un elenco dopo il dataframe è già popolato ...

>>> 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

Se si desidera aggiungere una Serie e utilizzare il Index Series' come colonne del dataframe, avete solo bisogno di aggiungere il serie tra parentesi:

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 il ignore_index=True si d su non ottenere l'indice corretto.

0
df = pd.DataFrame(columns=list("ABC")) 
df.loc[len(df)] = [1,2,3] 
Problemi correlati