2016-07-27 23 views
0

Ich möchte l in Spalte 'A' hinzufügen, aber es erstellt eine neue Spalte und fügt l zum letzten hinzu. Warum passiert es? Und wie kann ich machen was ich will?Warum Python Pandas so an DataFrame anhängen?

import pandas as pd 

l=[1,2,3] 
df = pd.DataFrame(columns =['A']) 
df = df.append(l, ignore_index=True) 
df = df.append(l, ignore_index=True) 
print(df) 
    A 0 
0 NaN 1.0 
1 NaN 2.0 
2 NaN 3.0 
3 NaN 1.0 
4 NaN 2.0 
5 NaN 3.0 
+0

append dient zum Hinzufügen von * rows * zu einem DataFrame, nicht zu Spalten. – ayhan

Antwort

2

Edited Ist das, was Sie tun möchten:

In[6]:df=df.A.append(pd.Series(l)).reset_index().drop('index',1).rename(columns={0:'A'}) 

In[7]:df 
Out[7]: 
    A 
0 1 
1 2 
2 3 

Dann können Sie jede Liste unterschiedlicher Länge hinzufügen. Angenommen:

a=[9,8,7,6,5] 

In[11]:df=df.A.append(pd.Series(a)).reset_index().drop('index',1).rename(columns={0:'A'}) 

In[12]:df 
Out[12]: 
    A 
0 1 
1 2 
2 3 
3 9 
4 8 
5 7 
6 6 
7 5 

Zuvor suchen Sie dies für:

df=pd.DataFrame(l,columns=['A']) 

df 
Out[5]: 
    A 
0 1 
1 2 
2 3 
+0

Nein. Ich muss ständig (in einer Schleife) der Spalte A neue Elemente hinzufügen und l 'immer (bei jeder neuen Iteration einer Schleife) verschiedene Elemente und unterschiedliche Länge auflisten. – Tragen

+0

@Tragen ist das, was Sie wollten. – shivsn

2

Sie können nur ein Wörterbuch in dem Datenrahmen Konstruktor übergeben, dass, wenn ich das richtig verstehe Ihre Frage.

l = [1,2,3] 
df = pd.DataFrame({'A': l}) 
df 
    A 
0 1 
1 2 
2 3 
+0

Nein. Ich muss ständig (in einer Schleife) der Spalte A neue Elemente hinzufügen, und l 'listet immer (mit jeder neuen Iteration einer Schleife) verschiedene Elemente und unterschiedliche Länge auf. – Tragen

Verwandte Themen