写入CSV文件
Dataframe to file
#![allow(unused)] fn main() { //写入csv文件 let mut file = File::create("docs/data/output.csv").expect("could not create file"); CsvWriter::new(&mut file).finish(&mut employee_df)?; }
lazyframe to file
#![allow(unused)] fn main() { let mut opt= CsvWriterOptions::default(); opt.maintain_order=true; //数据是并行处理的,如不开启此选项,文件中行顺序不能保证 opt.include_bom=true;//添加BOM 。如果不添加BOM,Excel打开会乱码;某些程序不支持UTF8 BOM,此时也会乱码。 df1.lazy().sink_csv("d:/out.csv", opt)?; }
BOM即Byte Order Mark字节序标记。BOM是为UTF-16和UTF-32准备的,用户标记字节序(byte order)。BOM即Byte Order Mark字节序标记。UTF-16、UTF-32是以2个字节和4个字节为单位进行处理的,就要考虑大端序、小端序问题。UTF-8编码是以1个字节为单位进行处理的,不会受CPU大小端的影响;UTF-8不需要BOM来表明字节顺序,不包含BOM的UTF-8才是标准格式。但微软选择用BOM来表明编码方式,因此没有BOM的UTF-8 CSV格式Excel会乱码,因为Excel默认编码为。含有BOM的UTF8格式也有兼容性问题,某些程序不识别BOM,就会导致UTF-8乱码。