2017-05-05 65 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將得到ü想什麼