一、文件
一个测试有两个sheet页的Excel测试文件 test.xlsx
二、代码
1
2
3
4
5
|
import pandas as pd
file1 = pd.ExcelFile( 'D:\\data\\py\\test.xlsx' )
file2 = pd.read_excel( 'D:\\data\\py\\test.xlsx' )
print ( file )
|
1
2
3
4
5
6
|
<pandas.io.excel._base.ExcelFile object at 0x0000021DE525DF88 >
- - - - - - - - - - - - - - - - - 分割线 - - - - - - - - - - - - - - - - - - - - -
姓名 年龄 性别 住址
0 张三 7 男 NaN
1 李四 6 男 NaN
2 王芳 6 女 NaN
|
三、分析
pd.read_excel读出来是一个dataframe可以直接打印出内容,但是只能读取一个sheet页,默认第一个sheet页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
@Appender (_read_excel_doc)
@deprecate_kwarg ( "skip_footer" , "skipfooter" )
def read_excel(
io,
sheet_name = 0 ,
header = 0 ,
names = None ,
index_col = None ,
usecols = None ,
squeeze = False ,
dtype = None ,
engine = None ,
converters = None ,
true_values = None ,
false_values = None ,
skiprows = None ,
nrows = None ,
na_values = None ,
keep_default_na = True ,
verbose = False ,
parse_dates = False ,
date_parser = None ,
thousands = None ,
comment = None ,
skip_footer = 0 ,
skipfooter = 0 ,
convert_float = True ,
mangle_dupe_cols = True ,
* * kwds
):
for arg in ( "sheet" , "sheetname" , "parse_cols" ):
if arg in kwds:
raise TypeError(
"read_excel() got an unexpected keyword argument " "`{}`" . format (arg)
)
if not isinstance (io, ExcelFile):
io = ExcelFile(io, engine = engine)
elif engine and engine ! = io.engine:
raise ValueError(
"Engine should not be specified when passing "
"an ExcelFile - ExcelFile already has the engine set"
)
return io.parse(
sheet_name = sheet_name,
header = header,
names = names,
index_col = index_col,
usecols = usecols,
squeeze = squeeze,
dtype = dtype,
converters = converters,
true_values = true_values,
false_values = false_values,
skiprows = skiprows,
nrows = nrows,
na_values = na_values,
keep_default_na = keep_default_na,
verbose = verbose,
parse_dates = parse_dates,
date_parser = date_parser,
thousands = thousands,
comment = comment,
skipfooter = skipfooter,
convert_float = convert_float,
mangle_dupe_cols = mangle_dupe_cols,
* * kwds
)
|
pd.ExcelFile 返回值是一个Excel对象,不能直接用,但是可以读取整个Excel内容
四、pd.ExcelFile
1
|
file = pd.ExcelFile( 'D:\\data\\py\\test.xlsx' )
|
sheet页名称
1
|
print ( file .sheet_names)
|
1
|
[ '一年级' , '二年级' ]
|
遍历读取每个sheet页的内容
1
2
3
|
for name in file .sheet_names:
_df = pd.read_excel( file ,name)
print (_df)
|
1
2
3
4
5
6
7
8
|
姓名 年龄 性别 住址
0 张三 7 男 NaN
1 李四 6 男 NaN
2 王芳 6 女 NaN
姓名 年龄 性别
0 李明 8 男
1 刘敏 8 女
2 张强 7 男
|
将两个sheet页的内容合并,并添加一列内容为sheet页名称
1
2
3
4
5
6
7
|
df_list = []
for name in file .sheet_names:
_df = pd.read_excel( file ,name)
_df[ '班级' ] = name
df_list.append(_df)
df = pd.concat([_df for _df in df_list],sort = False )
print (df)
|
1
2
3
4
5
6
7
|
姓名 年龄 性别 住址 班级
0 张三 7 男 NaN 一年级
1 李四 6 男 NaN 一年级
2 王芳 6 女 NaN 一年级
0 李明 8 男 NaN 二年级
1 刘敏 8 女 NaN 二年级
2 张强 7 男 NaN 二年级
|
忽略掉原来的index
1
2
|
df = pd.concat([_df for _df in df_list],ignore_index = True ,sort = False )
print (df)
|
1
2
3
4
5
6
7
|
姓名 年龄 性别 住址 班级
0 张三 7 男 NaN 一年级
1 李四 6 男 NaN 一年级
2 王芳 6 女 NaN 一年级
3 李明 8 男 NaN 二年级
4 刘敏 8 女 NaN 二年级
5 张强 7 男 NaN 二年级
|
修改列名为英文
1
2
|
df = df.rename(columns = { '姓名' : 'name' , '年龄' : 'age' , '性别' : 'sex' , '住址' : 'address' , '班级' : 'class' })
print (df)
|
1
2
3
4
5
6
7
|
name age sex address class
0 张三 7 男 NaN 一年级
1 李四 6 男 NaN 一年级
2 王芳 6 女 NaN 一年级
3 李明 8 男 NaN 二年级
4 刘敏 8 女 NaN 二年级
5 张强 7 男 NaN 二年级
|
将df保存为CSV、Excel文件
1
2
|
df.to_csv( '../data/sheet合并.csv' ,index = False )
df.to_excel( '../data/sheet合并.xls' ,index = True )
|
五、总结
可以发现Python读写Excel文件还是很方便的!
/python/blob/master/data/sheet%E5%90%88%E5%B9%B6.xls)
1
2
|
df.to_csv( '../data/sheet合并.csv' ,index = False )
df.to_excel( '../data/sheet合并.xls' ,index = True )
|
到此这篇关于教你用Python实现Excel表格处理的文章就介绍到这了,更多相关Python处理Excel内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/dkl12/article/details/116790859