2016-05-23 67 views
0

我试图将每个文件的数据帧附加到一个主数据框中。然而,最终的数据框是空白的。我在尝试追加和独立的数据框有数据之前打印每个数据。数据帧附加错误

代码:

import pandas as pd 
import os 

source_directory = r'H:\folder' 

masterDF = pd.DataFrame() 

for file in os.listdir(source_directory): 
    if file.endswith(".xlsx") or file.endswith(".xls"): 
     dataframe = pd.read_excel(source_directory + '\\' + file) 
     print(dataframe) 
     masterDF.append(dataframe) 

print(masterDF) 

结果:

Col_A Col_B 
0  46  5 
1  56  4 
2  45  4 
3  45  4 
4 455  5 
5  4  4 
6  4  5 
7 544  4 
    Col_A Col_B 
0  64  9 
1  4  45 
2  4  42 
3  45  4 
4  46  7 
5  56  75 
Empty DataFrame 
Columns: [] 
Index: [] 
+1

你会更好,每个追加到DF的列表,然后调用'pd.concat'这样定义一个空列表'masterDF = [] '然后在你的循环外调用'pd.concat(master_DF,ignore_index = True)' – EdChum

+0

@EdChum hello Ed。那么,我是否以同样的方式阅读excel?或者我必须将excel读入列表中? – Rodger

+0

@EdChum感谢您的帮助,编辑 – Rodger

回答

1

追加不到位的工作,它返回附加数据帧,所以你必须把它分配给masterDF:

masterDF = masterDF.append(dataframe) 

但是,追加数据帧意味着每次都必须构建一个新的数据帧。更快的替代方法是构建从Excel文件读取的数据框的列表,然后使用返回一个数据框的pd.concat(my_list)。

编辑你的代码,我会做这样的:

+0

所以我可以把数据框放在列表中? – Rodger

+0

是的,所有东西都是Python中的一个对象,并且可以创建一个对象列表。 Concat会认识到它是一个数据框的列表,并将它们加在一起 –

+0

我编辑了我的答案,编辑了你的代码 –