两张表格以sid列关联后,逐列进行数据比对,发现不一致的数据按照表格3格式输出,并对表格3的sid列前6位码进行分类输出,自动生成六位码命名的文件夹
import pandas as pd
df1=pd.read_excel('test.xlsx', sheet_name='内网平台').set_index('sID')
df1.sort_index()
df2=pd.read_excel('test.xlsx', sheet_name='ihaps').set_index('sID')
df_ihaps = df2.groupby(df2.index)[df2.columns[2:4201]].sum()
df_plat=df1.sort_index()
a=df_plat.columns
b=df_ihaps.columns
c=[i for i in b if not i in a]
ihaps=df_ihaps.drop(c,axis=1)
plat=df_plat
for i in ihaps.columns:
df=pd.concat([plat[i],ihaps[i]],axis=1)
df.columns=['old_'+i,'new_'+i]
df['diff']=df[df.columns[0]]-df[df.columns[1]]
df=df[~(df['diff']==0)]
if len(df)==0:continue
df.to_csv(i+'.csv')
1、输出的表格数据一样,但是相减之后得到一个不为0的值,能否规避这些?(如图)
1、把结果输出到不同的文件夹中,文件夹名称和表内sid列前六位码一致。
说个思路
1、数据相同,相减结果不为零,看结果的数据形式,可考虑添加判断,若diff绝对值小于一小值则不输出
df=df[~(abs(df['diff'])<1e-9)]
2、根据6位数字保存至相应文件夹,只需取出该6位数字,判断当前是否存在该文件夹,不存在则新建一个,相应修改保存路径
import os
dirname = i[2:8] # i为循环的文件名
if not os.path.exists(dirname):
os.mkdir(dirname)
...
df.to_csv('dirname\\' + i + '.csv')