大数跨境
0
0

python批量合并多个表并将表名添加为新列

python批量合并多个表并将表名添加为新列 数据分析之渔
2022-08-04
1
导读:讲究效率的时代,高效办公显得尤为重要,作为数据分析师遇到大批量的表格时你是怎么处理的呢
点击上方"数据分析之渔"
关注我们吧!

数据的来源千奇百怪,如果是属于自己的数据可直接从系统导出或者数据库获取非常省事;但如果数据是由别人提供的或者陈年累月积累下来的,并且在几十个表以上,如果每个表的格式和数据列是同类型的数据那么这个方法就很高效处理这个问题。


该方法的前提是需要保证列数相同,并且是同类型的数据。将所有需要合并的表格放在同一个文件夹中。如下面的例子共28个不同时间的表需要合并


无需将文件名添加为新列的合并方法

示例代码如下:

# 加载所需的包import pandas as pdimport glob ,osfrom warnings import filterwarningsfilterwarnings('ignore')
path = r'E:\数据分析之渔\批量合并文件' #文件夹路径file = glob.glob(os.path.join(path,'*.csv'))print(file)d1 = []for f in file:    d1.append(pd.read_csv(f))    for i in d1:        print("共 {} 列,列名称:{}".format(i.shape[1],i.columns)) # 查看每个表有多少列 ,查看每个表的列名称
print("一共{}个表".format(len(d1))) # 查看该文件夹下一共有多少个表df = pd.concat(d1) #合并所有表

结果




需要将文件名添加为新列的合并方法

如不同的表是按月份或者人名、或地名进行命名但表中不含有该信息的时候,需要根据表名来添加识别的数据,可按如下方法

path = r'E:\数据分析之渔\批量合并文件'file = glob.glob(os.path.join(path,'*.csv'))
d1 = []for f in file: a = pd.read_csv(f) # 读取文件 a['原文件名称'] = os.path.basename(f).split('.')[0] # 新增的列,os.path.basename() 函数为获取文件名 d1.append(a)
df = pd.concat(d1) # 合并文件
# 查看合并后的文件大小以及字段名称print("数据大小:{},列名称:{}".format(df.shape,df.columns))

结果,“原文件名称”便是新增用于识别的列,如果表格是利用日期命名但表中不含日期信息那么这个方法就很有效



end~~



数据分析之渔

碎片时间提升自己

【声明】内容源于网络
0
0
数据分析之渔
大数据、商业数据分析、AI科技等资讯分享,联系作者请注明合作项
内容 69
粉丝 0
数据分析之渔 大数据、商业数据分析、AI科技等资讯分享,联系作者请注明合作项
总阅读3
粉丝0
内容69