pandas操作excel
引入包
import numpy
import pandas
1、创建写入对象
writer = pandas.ExcelWriter(os.path.join(tar_path, file_name + '.xlsx'))
2、转化为dataframe对象
f = pandas.DataFrame(numpy.array(列表), columns=['指定列'])
3、读取excel对象
pandas.DataFrame(pandas.read_excel(src_path, sheet_name=sheetname, usecols=[0, 1, 2], keep_default_na=False, header=1))
- src_path:excel路径
- sheetname:excel的sheet页名称
- usecols:需要读取的列编号
- keep_default_na:空白单元格显示为空
- header:表头位置
- skip_rows:需要跳过的行数(从首行开始)
4、插入列到dataframe对象
table_frame.insert(loc=1, column='表中文名', value='表的中文名')
- loc:插位置列编号从0开始
- column:列名
- value:插入列的值
5、dataframe对象转换为list
l = numpy.array(dataframe).tolist()
6、获取某个单元格的值
table_data_frame.iloc[[2], [1]].values[0][0]
获取第三行,第二列的值
7、按照某列的值筛选数据内容
group = table_data_frame.loc[table_data_frame[5] == 'a']
筛选第五列为 ‘a’的数据内容
group = table_data_frame.loc[table_data_frame['name'] == 'a']
筛选 name 列为 ‘a’的数据内容
8、原样读取数值
用pandas进行数值读取的时候,回自动保留小数点后六位进行四舍五入导致数据失真.
需要将dataframe对象的所有类型都转为 str 类型
data_frame = data_frame.astype(str)
9、筛选某两列的值并将两列合在一起
# 获取一个 Series 对象
data_series1 = data_frame['列名1']
data_series2 = data_frame['列名2']
# 将 Series 对象装换位 DataFrame 对象(因为后续用到的 join 和 append 方法都是 DataFrame 对象的)
data_frame1 = pandas.DataFrame(data_series1)
data_frame2 = pandas.DataFrame(data_series2)
data_frame1
列名1 |
---|
A |
B |
C |
D |
data_frame2
列名2 |
---|
1 |
2 |
3 |
4 |
result = data_frame1.join(data_frame2)
# 按照某列匹配连接
# result = data_frame1.join(data_frame2,on='连接列的列名')
结果如下
列名1 | 列名2 |
---|---|
A | 1 |
B | 2 |
C | 3 |
D | 4 |
result = pandas.concat([data_frame1, data_frame2], ignore_index=True)
列名1 |
---|
A |
B |
C |
D |
1 |
2 |
3 |
4 |
merge合并
df_inner=pandas.merge(data_frame1,data_frame2,how='inner') # 匹配合并,交集
df_left=pandas.merge(data_frame1,data_frame2,how='left') # 以左为主合并(类似left join)
df_right=pandas.merge(data_frame1,data_frame2,how='right') # 以右为主合并(类似right join)
df_outer=ppandas.merge(data_frame1,data_frame2,how='outer') #并集
10、写入excel
f.to_excel(writer, index=False, sheet_name='指定sheet页')
11、关闭对象
writer.save()
writer.close()