python pandas 将excell转为csv 处理数据日期 替换数据内换行换行 代码亲测可用

pandas 将excell转为csv,并且替换掉excell里面的换行符,处理完日期

业务需求:公司从外部获取了一份excell文件,需要把文件放到hive里面,excell里面有不符合要求的日期格式,并且字段里面包含换行符,hive识别后,会造成字段串位,所以需要把excell的日期和换行符处理完成之后,转成csv,然后推到集群

  • 将excell转成csv
    def excell_to_csv(excell_file_path, date_time_index=[], skiprows=0, format="%Y/%m/%d %H:%M:%S"):
        """

        :param excell_file_path: excell文件路径,处理完成之后会在excell文件的路径下,生成以asv结尾的csv文件
        :param date_time_index: 需要处理的时间日期所在的列
        :param skiprows: 从第几行开始处理,默认不带字段名,如果有字段名,这skiprows=1,自动跳过第一行
        :param format: excell文件里面日期的格式
        :return:
        """
        # headre=None,读取excell文件,认为excell文件里面第一行不是字段名
        excell_dataframe = pd.read_excel(excell_file_path, header=None, skiprows=skiprows)
        print(excell_dataframe)
        for index in date_time_index:
            # 遇到日期中有不是标准格式的日期,两种解决办法:1.errors="coerce",2.infer_datetime_format=True 两种方法都会把非标准日期,转换为空
            excell_dataframe[index] = pd.to_datetime(excell_dataframe[index], format=format, errors="coerce")
            # excell_dataframe[index] = pd.to_datetime(excell_dataframe[index], infer_datetime_format=True)
        # 利用正则,把每个字段里面的换行调换掉
        excell_dataframe = excell_dataframe.replace(to_replace=r"\n", value="", regex=True).replace(to_replace=r"\r", value="", regex=True).replace(to_replace=r"\r\n", value="", regex=True)
        # 把读取的dataframe数据生成csv,index=False,不要行索引,header=None不要列名,sep="\001"以ascall1作为csv文件分隔符(此时在linux下,vi打开asv文件可以看到分隔符),分隔符可以自定义
        excell_dataframe.to_csv("{}".format(excell_file_path.replace(".xlsx",".asv").replace(".xls", ".asv")), index=False, header=None, encoding='utf-8', sep='\001')
    if __name__ == '__main__':
        excell_to_csv('cc_complaint.xls', date_time_index=[1, 2], skiprows=1)

  • cc_complaint.xls 文件,没有找到上传附件的方法,只能粘贴xls文件,注意每一行数据都会和下一行数据隔一个空行,有的字段里面有换行,所以一条数据可能在多行
案例编号    案例日期    消费时间    备注


1808118720  2018/8/14 18:14:19  2018/8/14   "2018/08/14 18:17:36    MCD009:
感谢反馈,留4009200205热线,故此案关闭。"
1808121500  2018/8/16 18:01:20  2018/8/16 18:01 "2018/08/16 18:09:30    MCD080:
已安抚顾客  告知会尽快处理

2018/08/16 18:20:46 MCD001:
联系餐厅孙经理,告知经理顾客来电诉求,经理了解。"
1808121498  2018/8/16 17:58:30  2018/8/16 17:58:30  "2018/08/16 18:05:29    MCD304:
在线记录核实反馈"

1808121493  2018/8/16 17:56:36  222222  

1808121486  2018/8/16 17:52:10  2018/8/16 17:52:10  

1808121485  2018/8/16 17:51:58  2018/8/16 17:51:58  

1808121484  2018/8/16 17:51:54  2018/8/16 17:51:54  
  • cc_complaint.xls 文件图片如图
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41734687/article/details/82432769