2017-05-05 59 views
1

我知道有几种方法可以在Pandas中构建数据框。我的问题只是为了理解下面的方法不起作用。为什么我不能在循环中追加熊猫数据框

首先是一个工作示例。我可以创建一个空的数据帧,然后添加一个新的类似文献展

In [3]: df1 = pd.DataFrame([[1,2],], columns = ['a', 'b']) 
    ...: df2 = pd.DataFrame()  
    ...: df2.append(df1) 

Out[3]: a b 0 1 2

但是,如果我做了以下DF2成为无:

In [10]: df1 = pd.DataFrame([[1,2],], columns = ['a', 'b']) 
    ...: df2 = pd.DataFrame() 
    ...: for i in range(10): 
    ...:  df2.append(df1) 

In [11]: df2 
Out[11]: 
Empty DataFrame 
Columns: [] 
Index: [] 

有人能解释为什么它以这种方式工作?谢谢!

+0

此答案有帮助吗? http://stackoverflow.com/a/37009377/3639023 – johnchase

回答

2

这是因为.append()方法返回一个新的DF:

Pandas Docs (0.19.2)

大熊猫.DataFrame.append

返回:所附:数据帧

这里的工作的例子,所以你可以看到发生了什么在每次循环:

df1 = pd.DataFrame([[1,2],], columns=['a','b']) 
df2 = pd.DataFrame() 
for i in range(0,2): 
    print(df2.append(df1)) 

> a b 
> 0 1 2 
> a b 
> 0 1 2 

如果分配.append的输出()的DF(甚至相同的一个),你会得到你所期望的:

for i in range(0,2): 
    df2 = df2.append(df1) 
print(df2) 

> a b 
> 0 1 2 
> 0 1 2 
0

df.append()返回一个新的对象。 df2最初是一个空的数据框,它不会改变。如果u做了DF3 = df2.append(DF1),U将得到ü想什么