【xlwings】结合pandas做类似vlookup的功能

参考自CSDN

导入模块

import pandas as pd
import xlwings as xw

创建sheet

#创建excel文档
    wb = xw.Book() # 创建一个Excel进程App, 并在App中新建一个Book,Book下自动创建一个Sheet
    wb.save(文件)
    
##excel表显示设定
    app=xw.App(visible=False,add_book=False)
    app.display_alerts=False
    app.screen_updating=False
    
# 获取当前活动的工作表,并新建工作表
    sht1 = wb.sheets.active    
    sht1.name = "某表"

pandas读取excel表

df = pd.read_excel(考勤.xlsx,sheet_name="某表")

几种模拟vlookup的情形

定量:
sht1.range("G3").value=df[['夜班补助']].loc[df['姓名']=="某某"].iat[0,0]
定量向变量过渡:
sht1.range("G3").value=df[['夜班补助']].loc[df['姓名']==sht1.range("B3").value].iat[0,0]
一个变量:
for i in range (3,5):
     sht1.range("G"+str(i)).value = df[['夜班补助']].loc[df['姓名']==sht1.range("B"+str(i)).value].iat[0,0]
两个或以上的变量
for i in range (3,5):
    sht1.range('S'+str(i)).value = df_c[['合计']].loc[(df_c['类型']=='累计应发工资') & (df_c['姓名']==sht1.range('B'+str(i)).value)].iat[0,0]
两个以上的变量需要留意:

#loc必须用()包好每一个筛选条件,否则会出现『TypeError: Cannot perform ‘rand_’ with a dtyped [object] array and scalar of type [bool]』报错

可参考这Stackoverflow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allan_lam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值