我想将目录中的几个excel文件读入pandas并将它们连接成一个大数据帧。我虽然无法弄明白。我需要一些关于for循环和构建连接数据帧的帮助: 以下是我到目前为止的情况:
import sys
import csv
import glob
import pandas as pd
# get data file names
path =r'C:\DRO\DCL_rawdata_files\excelfiles'
filenames = glob.glob(path + "/*.xlsx")
dfs = []
for df in dfs:
xl_file = pd.ExcelFile(filenames)
df=xl_file.parse('Sheet1')
dfs.concat(df, ignore_index=True)
答案 0 :(得分:34)
正如评论中所提到的,您所犯的一个错误就是您正在循环一个空列表。
以下是我将如何使用一个示例,其中包含5个相同的Excel文件,这些文件是一个接一个地附加的。
(1)进口:
import os
import pandas as pd
(2)列出文件:
path = os.getcwd()
files = os.listdir(path)
files
输出:
['.DS_Store',
'.ipynb_checkpoints',
'.localized',
'Screen Shot 2013-12-28 at 7.15.45 PM.png',
'test1 2.xls',
'test1 3.xls',
'test1 4.xls',
'test1 5.xls',
'test1.xls',
'Untitled0.ipynb',
'Werewolf Modelling',
'~$Random Numbers.xlsx']
(3)选出'xls'文件:
files_xls = [f for f in files if f[-3:] == 'xls']
files_xls
输出:
['test1 2.xls', 'test1 3.xls', 'test1 4.xls', 'test1 5.xls', 'test1.xls']
(4)初始化空数据框:
df = pd.DataFrame()
(5)循环覆盖空数据框的文件列表:
for f in files_xls:
data = pd.read_excel(f, 'Sheet1')
df = df.append(data)
(6)享受您的新数据框。 : - )强>
df
输出:
Result Sample
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
答案 1 :(得分:5)
答案 2 :(得分:1)
这可以通过这种方式完成:
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("/path/to/directory/*.xlsx"):
df = pd.read_excel(f)
all_data = all_data.append(df,ignore_index=True)
all_data.to_csv("new_combined_file.csv")
答案 3 :(得分:0)
将熊猫作为pd导入
导入操作系统
os.chdir('...')
fdf = pd.read_excel(“ first_file.xlsx”,sheet_name =“ sheet_name”)
fdf [“ counter”] = 1
nm = list(fdf)
c = 2
对于os.listdir()中的i:
print(c)
如果c <1001:
if "xlsx" in i:
df= pd.read_excel(i, sheet_name="sheet_name")
df["counter"]=c
if list(df)==nm:
fdf=fdf.append(df)
c+=1
else:
print("headers name not match")
else:
print("not xlsx")
fdf = fdf.reset_index(drop = True)
答案 4 :(得分:0)
import pandas as pd
import os
files = [file for file in os.listdir('./Salesfolder')]
all_month_sales= pd.DataFrame()
for file in files
df= pd.read_csv("./Salesfolder/"+file)
all_months_data=pd.concat([all_months_sales,df])
all_months_data.to_csv("all_data.csv",index=False)
您可以从文件夹(在我的情况下为Salesfolder)中读取所有.xls文件,本地路径也是如此。通过迭代使用,您可以将它们放入空数据框,并且可以将数据框与此连接。我还已经将所有月份的数据导出到另一个csv到一个csv文件中
答案 5 :(得分:0)
我有多个Excel文件,每个文件都有一个公共ID [每个Excel工作表都有ID列]。我尝试了以下方式。我没有根据ID获得正确的数据框。 将熊猫作为pd导入 导入操作系统
path=os.getcwd()
path
files=os.listdir(path)
fil_xlsx=[f for f in files if f[-4:]=='xlsx']
df=pd.DataFrame()
for f in fil_xlsx:
data=pd.read_excel(f,'Sheet1')
df=df.append(data)
我以这种方式得到一个空的数据框。
df=pd.DataFrame()
for f in fil_xlsx:
data=pd.read_excel(f,'Sheet1')
all1=pd.concat([data,df],ignore_index=True,join="inner")