pandas操作excel

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
A1
B2
C3
D4
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()
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值