时隔多日,终于能够独立写代码来实现自动化了!这次比较难搞的两个需求:(1)涉及到三张表之间的勾稽关系,比如已知表1和2有A\B特征,表2和表3有共同C特征,现在要比较比较表1和表3的D特征,所以需要将表1和表2进行匹配后通过表2间接比较1和3;(2)涉及到同一个单号下金额的匹配问题,问题是,在有多条金额数据的单号下,有可能是部分金额之和对应另一张表的金额,也可能是单行金额的一一对应,不过现在这个问题我也没有解决好。
过程中有四点收获。
第一,代码需要反复修改。具体为在jupyter中新建一个代码块,将有问题的单个数据跑一遍自己的代码,看看问题出在哪里,以及怎样可以解决。(特殊→共性)
第二,设置断点非常重要。具体为用jupyter跑代码,跑通了再函数封装写到spyder上面。以及有些对于如果运行会运行很久的文件,可以先输出,下次写的时候直接读取,就不用从0开始了。
第三,搞清楚规则的逻辑非常重要。上周无效敲代码20h,因为没搞清楚匹配规则就急急忙忙写了,后来把所有情况不重不漏地写下来后,问题就解决了。
第四,多多使用try...except。这也算是个个人小妙招?在读取文件过程中,我是用df_child = df.loc[需要定位的数据]来进行匹配的,这就可能出现df_child只有一行的情况,而此时DataFrame得一行数据会自动变成Series,这样子index长度会和多行数据的长度混淆,从而对后续的数据提取造成影响(因为dataframe中是df.iloc[1,1]的话,在series中应该是df[1])。我在网上没找到合适的解决方法,所以最后用try...(如果是series的话用的代码)except(如果是数据表的话用的代码),最后这个问题就解决啦!