python办公自动化,csv文件/excel文件差集合并
一、文件实现效果:
取收发模式.xlsx与基础数据.csv取差集,再用收发模式-差集合并基础数据,输出到新的收发模式.xlsx数据。
二、涉及子程序
1、polas导入csv文件
def pddaoru_csv(filedir):
encod=detect_csv_encoding(filedir)
print(f'encod:{encod}')
print(f'开始导入{filedir}文件,可以用时较长。')
df = pl.read_csv(filedir, encoding=encod) # polars导入excel文件命令
pf = df.to_pandas() # polars导入excel文件命令
print(f'导入{filedir}文件, 源有{len(df)}行,有效数据{len(pf)}行')
kkk=pf.copy()
return kkk
2、polas导入excel文件
def pldaoru_sheetname_260309(filedir):
print(f'正在导入excel表{filedir},用时可能较长。')
df = pl.read_excel(filedir) # polars导入excel文件命令
pf = df.to_pandas() # polars导入excel文件命令
kkk=pf.copy()
print(f'导入{filedir}文件, 导入{len(pf)}行')
return kkk
3、csv与excel合并程序
def rxtxtool():
dir_rxtx='./收发模式\\'
dir_data='./收发模式基础数据\\'
dir_out='./输出结果\\'
order_out=['所属行政地市','小区名称','GNODEBID(索引关键字)','小区id','ci','工作频段','发送和接收模式','收发模式','运营商','入库时间']
p_data= pd.DataFrame()
for file in os.listdir(dir_data):
filein = dir_data + file
pf_a = pddaoru_csv(filein)
p_data = pd.concat([p_data, pf_a])
order=['运营商','所属行政地市','小区名称','GNODEB ID(索引关键字)','小区id','ci','工作频段','发送和接收模式','入库时间']
p_data=p_data[order]
p_data.rename(columns={'GNODEB ID(索引关键字)':'GNODEBID(索引关键字)'},inplace=True)
print(p_data['ci'])
p_data['ci']=p_data['ci'].str.replace("\t","")
print(p_data['ci'])
p_data=p_data[(p_data['ci']!='<empty>')]
p_data = p_data[(p_data['ci'] != 'null')]
p_data = p_data[(p_data['发送和接收模式'] !=' ')]
p_data = p_data[(p_data['发送和接收模式'] != 'null ')]
p_data['ci']=p_data['ci'].astype(c_int64)
p_data['收发模式']=p_data['发送和接收模式'].str.replace('T.+$',"",regex=True)
p_data['收发模式']=p_data['收发模式']+'TR'
p_data=p_data[order_out]
p_data=p_data.drop_duplicates(subset=['ci'],keep="first")
order_1=['ci']
p_data_ci=p_data[order_1]
p_data_ci['data']='是'
# fileout=dir_out+'p_data.csv'
# p_data.to_csv(fileout,encoding='utf-8 sig',index=False)
p_rxtx= pd.DataFrame()
for file in os.listdir(dir_rxtx):
filein = dir_rxtx + file
pf_a = pldaoru_sheetname_260309(filein)
p_rxtx= pd.concat([p_rxtx, pf_a])
p_rxtx = p_rxtx.drop_duplicates(subset=['ci'], keep="first")
p_rxtx=pd.merge(p_rxtx,p_data_ci,on=['ci'],how="left")
p_rxtx=p_rxtx[pd.isnull(p_rxtx['data'])]
p_rxtx=p_rxtx[order_out]
p_rxtx=pd.concat([p_rxtx,p_data])
strtoday=strtodaydate()
fileout = dir_out + '发送接收模式_'+strtoday+'.xlsx'
p_rxtx.to_excel(fileout, index=False)
三、完正的运行程序已上传到【Python全栈开发】-自动化办公(Excel)-收发模式.csv匹配基础数据.xlsx文件实现数据合并,地址https://download.csdn.net/download/m0_67097444/92916242