python 利用os模块和pandas模块将100个excel表合并成一个excel表,pd.concat函数

这里直接贴代码了
import os
import pandas as pd
dir = ‘XXX’
fn = os.listdir(dir)
index = 0
dfs = []
for name in fn:
print(index)
dfs.append(pd.read_excel(os.path.join(dir,name)))
index += 1
df = pd.concat(dfs)
print(len(df))
df.to_csv(‘XXX/total.csv’,index = False)
说说问题的关键函数为df = pd.concat(dfs)这句,还有这句os.path.join(dir,name)
pd.concat得到的是个dataframe,是合并的功能;代码里得到的是一个dataframe的列表,然后合并。
os.path.join(dir,name)是获取每一个文件的路径的意思。需要将文件路径和文件拼接,指向文件。

标题虽然是100个表,实际可以是n个表。思路是将100个表放入一个文件夹下,首先通过fn = os.listdir(dir)获取一个列表,内容为所有的100个表的名称。

这段代码里面我多加了一个记数的功能,可以看出合并的进度,通过没合并一个,记数一次,记数到100时证明合并完成。

df.to_csv具体参数参照官方帮助https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html,这里df.to_csv(‘XXX/total.csv’,index = False) index = False是不需要行名的意思。这里可以转成excel也可以,我是先转成csv,好处在于我的内容里有大于15位的数字,直接转成excel,那15位以后就会变成0,这样是克服了excel的缺点

你可能感兴趣的:(python,concat,os,批量处理)