#excel #polars #xlsx

polars_excel_writer

将 Polars 数据帧序列化到 Excel xlsx 文件的 Polars 扩展

7 个版本 (破坏性更新)

0.7.0 2024年2月25日
0.6.0 2024年1月24日
0.5.0 2024年1月15日
0.4.0 2023年11月22日
0.1.0 2023年8月20日

#879编码

Download history 10/week @ 2024-04-07 23/week @ 2024-04-14 113/week @ 2024-05-05 72/week @ 2024-05-19 34/week @ 2024-05-26 70/week @ 2024-06-02 102/week @ 2024-06-09 79/week @ 2024-06-16 43/week @ 2024-06-23 70/week @ 2024-06-30 166/week @ 2024-07-07 117/week @ 2024-07-14 70/week @ 2024-07-21

每月436 次下载

MIT/Apache

85KB
364

polars_excel_writer

polars_excel_writer crate 是一个库,用于将 Polars 数据帧序列化为 Excel Xlsx 文件。

它为将数据帧写入 Excel Xlsx 文件提供了两个接口

  • ExcelWriter 一个简单的 Excel 序列化器,实现了 Polars 的 SerWriter 特性,用于将数据帧写入 Excel Xlsx 文件。

  • PolarsXlsxWriter 一个更可配置的 Excel 序列化器,其接口更接近 Polars 的 write_excel() 数据帧方法。

ExcelWriter 使用 PolarsXlsxWriter 进行 Excel 序列化,而 PolarsXlsxWriter 则使用 rust_xlsxwriter crate。

示例

使用 ExcelWriter 接口将 Polar Rust 数据帧写入 Excel 文件的示例。

use chrono::prelude::*;
use polars::prelude::*;

fn main() {
    // Create a sample dataframe for the example.
    let mut df: DataFrame = df!(
        "String" => &["North", "South", "East", "West"],
        "Integer" => &[1, 2, 3, 4],
        "Float" => &[4.0, 5.0, 6.0, 7.0],
        "Time" => &[
            NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
            NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
            NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
            NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
            ],
        "Date" => &[
            NaiveDate::from_ymd_opt(2022, 1, 1).unwrap(),
            NaiveDate::from_ymd_opt(2022, 1, 2).unwrap(),
            NaiveDate::from_ymd_opt(2022, 1, 3).unwrap(),
            NaiveDate::from_ymd_opt(2022, 1, 4).unwrap(),
            ],
        "Datetime" => &[
            NaiveDate::from_ymd_opt(2022, 1, 1).unwrap().and_hms_opt(1, 0, 0).unwrap(),
            NaiveDate::from_ymd_opt(2022, 1, 2).unwrap().and_hms_opt(2, 0, 0).unwrap(),
            NaiveDate::from_ymd_opt(2022, 1, 3).unwrap().and_hms_opt(3, 0, 0).unwrap(),
            NaiveDate::from_ymd_opt(2022, 1, 4).unwrap().and_hms_opt(4, 0, 0).unwrap(),
        ],
    )
    .unwrap();

    example1(&mut df).unwrap();
    example2(&df).unwrap();
}

// The ExcelWriter interface.
use polars_excel_writer::ExcelWriter;

fn example1(df: &mut DataFrame) -> PolarsResult<()> {
    let mut file = std::fs::File::create("dataframe.xlsx").unwrap();

    ExcelWriter::new(&mut file).finish(df)
}

// The PolarsXlsxWriter interface. For this simple case it is
// similar to the ExcelWriter interface but it has additional
// options to support more complex use cases.
use polars_excel_writer::PolarsXlsxWriter;

fn example2(df: &DataFrame) -> PolarsResult<()> {
    let mut xlsx_writer = PolarsXlsxWriter::new();

    xlsx_writer.write_dataframe(df)?;
    xlsx_writer.save("dataframe2.xlsx")?;

    Ok(())
}

第二个输出文件(与第一个相同)

另请参阅

  • 变更日志:最近添加的功能和修复。
  • 性能:与基于 Python 的方法的性能比较。

依赖项

~21–31MB
~481K SLoC