为了在Jupyter Notebook
中使用Rust
和Polars
库以类似于Pandas
的方式输出HTML
表格,我们可以使用 evcxr_jupyter
内核和HTML
格式化。虽然Rust
没有直接提供像Pandas
那样的内置HTML
表格输出,但我们可以通过手动构建HTML
表格并在Jupyter Notebook
中显示来实现这一点。
以下是一个详细的指南和示例代码:
安装和设置
安装 Rust 和
evcxr_jupyter
内核 首先,确保你已经安装了Rust
,然后安装evcxr_jupyter
。1
2cargo install evcxr_jupyter
evcxr_jupyter --install启动 Jupyter Notebook 启动
Jupyter Notebook
并新建一个Rust
内核的笔记。
编写代码
以下是一个使用Polars
库创建DataFrame
并生成HTML
表格的示例代码: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46:dep polars = {version = "0.39.1"}
:dep serde_json = "1.0"
use polars::prelude::*;
use polars::df;
use polars::frame::DataFrame;
use serde_json::json;
use std::fmt::Write;
fn create_dataframe() -> DataFrame {
let s0 = Series::new("days", &["mon", "tue", "wed", "thu", "fri"]);
let s1 = Series::new("temp", &[23, 34, 15, 30, 10]);
DataFrame::new(vec![s0, s1]).expect("DataFrame creation failed")
}
fn dataframe_to_html(df: &DataFrame) {
let columns = df.get_columns();
let headers: Vec<&str> = columns.iter().map(|s| s.name()).collect();
let mut html = String::new();
write!(
html,
"<table border=\"1\"><tr>{}</tr>",
headers
.iter()
.map(|h| format!("<th>{}</th>", h))
.collect::<Vec<String>>()
.join("")
)
.unwrap();
for i in 0..df.height() {
write!(html, "<tr>").unwrap();
for col in columns.iter() {
write!(html, "<td>{}</td>", col.get(i).unwrap()).unwrap();
}
write!(html, "</tr>").unwrap();
}
write!(html, "</table>").unwrap();
println!("EVCXR_BEGIN_CONTENT text/html\n{}\nEVCXR_END_CONTENT", html);
}
let df = create_dataframe();
let html_table = dataframe_to_html(&df);
html_table
解释代码
加载依赖项 在
Jupyter Notebook
中,我们使用:dep
命令来添加所需的依赖项:polars
和serde_json
。创建 DataFrame 函数
create_dataframe
创建了一个简单的DataFrame
,包含两个列:days
和temp
。生成 HTML 表格 函数
dataframe_to_html
将DataFrame
转换为HTML
表格格式:- 获取
DataFrame
的列并生成表头。 - 遍历每一行,生成表格的每一行数据。
- 使用
write!
宏构建HTML
字符串。
- 获取
输出 HTML 表格 最后,在
println!
函数中需要标明每个块以包含EVCXR BEGIN CONTENT
的一行开始,然后是mime
类型,然后是换行符,然后内容以包含EVCXR END CONTENT
的一行结束。生成的HTML
表格字符串被输出。Jupyter Notebook
会自动渲染HTML
字符串,从而显示漂亮的表格。