excel去掉一行文字中的逗号合并在一起_Python使用pandas库五行代码合并excel

2a23f555722aa06edf08237cdc58fec7.png

使用用Python快速合并excel,相比使用VBA代码更简洁,但是使用到 glob 和pandas 两个库,其中glob为标准库无需安装,pandas需要pip安装。代码如下:

import 

代码解释

语句1:

flist=[i for i in glob.glob("E:*.xls")]

功能:获得所有后缀为xls的文件,写入名为flist的列表。

glob.glob(r"E:*.xls")

获取E盘下后缀为xls的文件,使用时换为自己路径和文件名如"E:*.csv"

glob模块用来查找文件目录和文件,并将搜索的到的结果返回到一个列表中,支持三种通配符,其中 “*”代表0个或多个字符,“?”代表一个字符, “[]”匹配指定范围内的字符,如[0-9]匹配数字。

知乎用户子明子羽先生在https://zhuanlan.zhihu.com/p/71861602有这个模块的详细说明

 [i for i in …]

为列表推导式,生成一个元素为i的列表,以[i for i in a]为例

等价于

b=list()
for i in a:
    b.append(i)

代替语句

本语句可以用Python标准库 os 中的 listdir代替

import os

files = [name for name in os.listdir("E:*.xls")if name.endswith('.xls')]

语句2:

d = pd.concat([pd.read_excel(i,header = None) for i in flist],axis=0)

利用pandas的read_excel读取excel,形成DateFrame,可以参考我写的https://zhuanlan.zhihu.com/p/138212562

[pd.read_excel(i,header = None) for i in flist] 利用列表推导式生成一个DateFrame列表,其中每个表都是由excel生成的。

利用pandas的concat函数将列表中的DateFrame合并。

注意:header = None必须加上,否则会把excel的第一列作为列名,在合并时由于不同的的列名横向排列(与是否加axis=0无关,axis只能决定同列名的数据沿那个轴合并),导致只能横向合并。

例如不加header = None时:

第一张表

a b

1 2

生成的DateFrame为(第一行的值 a 和 b成为了列名 )

a b

1 2

第二张表

b c

3 4

生成的DateFrame为(第一行的值 b和 c成为了列名 )

b c

3 4

合并后的表为(a b c三个不同的列横向排列,对于b列由于axis=0纵向排列)

a b c
1 2 3 
  3

加header = None时:

第一张表生成的DateFrame为(0 和 1 是自动生成的列名 )

0 1

a b

1 2

第二张表生成的DateFrame为(0和1 为自动生成的列名 )

0 1

b c

3 4

合并后的表为

0  1
a  b
1  2
b  c
3  4
 

语句3:

d.to_excel( "comb.xls", header = False,index=False, encoding='utf-8')

comb.xls为合并后的文件名,存放于python脚本所在的目录下

注意:header = False要加上,这样写入excel时会把读取excel生成DateFrame时自动生成的列名去掉(上例中自动生成的列名0 和1 )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值