2016-07-27 57 views
0

我想在'A'列中添加l,但它创建了一个新列,并将l添加到最后一列。为什么会发生?我怎么能做到我想要的?为什么Python Pandas像这样附加到DataFrame?

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用于将* rows *添加到DataFrame,而不是列。 – ayhan

回答

2

编辑 这是你想要做什么:

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 

然后你就可以添加不同长度的任何名单。 假设:

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 

以前 你在找这样的:

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

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

不需要。我必须不断地(在一个循环中)向列A中添加新元素,并且始终列出'l'(使用任何新的循环迭代)具有不同的元素和不同的长度。 – Tragen

+0

@Tragen是你想要的。 – shivsn

2

您只需通过一本字典在数据帧的构造,如果我正确地理解你的问题。

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

不需要。我必须不断(在一个循环中)向列A中添加新元素,并且总是列出'l'(使用任何新的循环迭代)具有不同的元素和不同的长度。 – Tragen