mirror of
https://github.com/Magnus167/rustframe.git
synced 2025-08-20 13:00:00 +00:00
applied formatting
This commit is contained in:
parent
aa15248b58
commit
4038d25b07
@ -669,7 +669,12 @@ impl DataFrame {
|
|||||||
impl fmt::Display for DataFrame {
|
impl fmt::Display for DataFrame {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
if self.rows() == 0 || self.cols() == 0 {
|
if self.rows() == 0 || self.cols() == 0 {
|
||||||
return write!(f, "Empty DataFrame\nRows: {}, Columns: {}", self.rows(), self.cols());
|
return write!(
|
||||||
|
f,
|
||||||
|
"Empty DataFrame\nRows: {}, Columns: {}",
|
||||||
|
self.rows(),
|
||||||
|
self.cols()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut output = String::new();
|
let mut output = String::new();
|
||||||
@ -726,7 +731,11 @@ impl fmt::Display for DataFrame {
|
|||||||
if col_name == "..." {
|
if col_name == "..." {
|
||||||
output.push_str(&format!("{:>width$} ", "...", width = 5)); // Fixed width for ellipsis
|
output.push_str(&format!("{:>width$} ", "...", width = 5)); // Fixed width for ellipsis
|
||||||
} else {
|
} else {
|
||||||
output.push_str(&format!("{:>width$} ", col_name, width = column_widths[col_name]));
|
output.push_str(&format!(
|
||||||
|
"{:>width$} ",
|
||||||
|
col_name,
|
||||||
|
width = column_widths[col_name]
|
||||||
|
));
|
||||||
_displayed_cols += 1;
|
_displayed_cols += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -738,7 +747,11 @@ impl fmt::Display for DataFrame {
|
|||||||
if col_name == "..." {
|
if col_name == "..." {
|
||||||
output.push_str(&format!("{:-<width$}-", "", width = 5));
|
output.push_str(&format!("{:-<width$}-", "", width = 5));
|
||||||
} else {
|
} else {
|
||||||
output.push_str(&format!("{:-<width$}-", "", width = column_widths[col_name]));
|
output.push_str(&format!(
|
||||||
|
"{:-<width$}-",
|
||||||
|
"",
|
||||||
|
width = column_widths[col_name]
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
@ -755,7 +768,8 @@ impl fmt::Display for DataFrame {
|
|||||||
let num_last_rows = DEFAULT_DISPLAY_ROWS - num_first_rows;
|
let num_last_rows = DEFAULT_DISPLAY_ROWS - num_first_rows;
|
||||||
rows_to_display.extend((0..num_first_rows).collect::<Vec<usize>>());
|
rows_to_display.extend((0..num_first_rows).collect::<Vec<usize>>());
|
||||||
rows_to_display.push(usize::MAX); // Sentinel for ellipsis row
|
rows_to_display.push(usize::MAX); // Sentinel for ellipsis row
|
||||||
rows_to_display.extend((total_rows - num_last_rows..total_rows).collect::<Vec<usize>>());
|
rows_to_display
|
||||||
|
.extend((total_rows - num_last_rows..total_rows).collect::<Vec<usize>>());
|
||||||
}
|
}
|
||||||
|
|
||||||
for &row_idx in &rows_to_display {
|
for &row_idx in &rows_to_display {
|
||||||
@ -789,14 +803,22 @@ impl fmt::Display for DataFrame {
|
|||||||
DataFrameColumn::Bool(s) => format!("{}", s[row_idx]),
|
DataFrameColumn::Bool(s) => format!("{}", s[row_idx]),
|
||||||
DataFrameColumn::String(s) => format!("{}", s[row_idx]),
|
DataFrameColumn::String(s) => format!("{}", s[row_idx]),
|
||||||
};
|
};
|
||||||
output.push_str(&format!("{:>width$} ", cell_str, width = column_widths[col_name]));
|
output.push_str(&format!(
|
||||||
|
"{:>width$} ",
|
||||||
|
cell_str,
|
||||||
|
width = column_widths[col_name]
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Print Footer ---
|
// --- Print Footer ---
|
||||||
output.push_str(&format!("\n[{} rows x {} columns]\n", self.rows(), self.cols()));
|
output.push_str(&format!(
|
||||||
|
"\n[{} rows x {} columns]\n",
|
||||||
|
self.rows(),
|
||||||
|
self.cols()
|
||||||
|
));
|
||||||
|
|
||||||
write!(f, "{}", output)
|
write!(f, "{}", output)
|
||||||
}
|
}
|
||||||
@ -1338,8 +1360,14 @@ mod tests {
|
|||||||
assert_eq!(head_all_df.cols(), 2);
|
assert_eq!(head_all_df.cols(), 2);
|
||||||
assert_eq!(head_all_df.columns(), &["A", "B"]);
|
assert_eq!(head_all_df.columns(), &["A", "B"]);
|
||||||
assert_eq!(head_all_df.index(), &RowIndex::Range(0..7));
|
assert_eq!(head_all_df.index(), &RowIndex::Range(0..7));
|
||||||
assert_eq!(head_all_df.column("A").as_f64().unwrap(), &[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]);
|
assert_eq!(
|
||||||
assert_eq!(head_all_df.column("B").as_i64().unwrap(), &[10, 20, 30, 40, 50, 60, 70]);
|
head_all_df.column("A").as_f64().unwrap(),
|
||||||
|
&[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
head_all_df.column("B").as_i64().unwrap(),
|
||||||
|
&[10, 20, 30, 40, 50, 60, 70]
|
||||||
|
);
|
||||||
|
|
||||||
// Test head_n with n = 0
|
// Test head_n with n = 0
|
||||||
let empty_head_df = df.head_n(0);
|
let empty_head_df = df.head_n(0);
|
||||||
@ -1350,8 +1378,16 @@ mod tests {
|
|||||||
|
|
||||||
// Test with Int index
|
// Test with Int index
|
||||||
let int_index = RowIndex::Int(vec![100, 101, 102, 103, 104, 105, 106]);
|
let int_index = RowIndex::Int(vec![100, 101, 102, 103, 104, 105, 106]);
|
||||||
let col_a_int = create_f64_typed_frame("A", vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], Some(int_index.clone()));
|
let col_a_int = create_f64_typed_frame(
|
||||||
let col_b_int = create_i64_typed_frame("B", vec![10, 20, 30, 40, 50, 60, 70], Some(int_index.clone()));
|
"A",
|
||||||
|
vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0],
|
||||||
|
Some(int_index.clone()),
|
||||||
|
);
|
||||||
|
let col_b_int = create_i64_typed_frame(
|
||||||
|
"B",
|
||||||
|
vec![10, 20, 30, 40, 50, 60, 70],
|
||||||
|
Some(int_index.clone()),
|
||||||
|
);
|
||||||
let df_int = DataFrame::new(
|
let df_int = DataFrame::new(
|
||||||
vec![col_a_int, col_b_int],
|
vec![col_a_int, col_b_int],
|
||||||
vec!["A".to_string(), "B".to_string()],
|
vec!["A".to_string(), "B".to_string()],
|
||||||
@ -1387,8 +1423,14 @@ mod tests {
|
|||||||
assert_eq!(tail_all_df.cols(), 2);
|
assert_eq!(tail_all_df.cols(), 2);
|
||||||
assert_eq!(tail_all_df.columns(), &["A", "B"]);
|
assert_eq!(tail_all_df.columns(), &["A", "B"]);
|
||||||
assert_eq!(tail_all_df.index(), &RowIndex::Range(0..7));
|
assert_eq!(tail_all_df.index(), &RowIndex::Range(0..7));
|
||||||
assert_eq!(tail_all_df.column("A").as_f64().unwrap(), &[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]);
|
assert_eq!(
|
||||||
assert_eq!(tail_all_df.column("B").as_i64().unwrap(), &[10, 20, 30, 40, 50, 60, 70]);
|
tail_all_df.column("A").as_f64().unwrap(),
|
||||||
|
&[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
tail_all_df.column("B").as_i64().unwrap(),
|
||||||
|
&[10, 20, 30, 40, 50, 60, 70]
|
||||||
|
);
|
||||||
|
|
||||||
// Test tail_n with n = 0
|
// Test tail_n with n = 0
|
||||||
let empty_tail_df = df.tail_n(0);
|
let empty_tail_df = df.tail_n(0);
|
||||||
@ -1399,8 +1441,16 @@ mod tests {
|
|||||||
|
|
||||||
// Test with Int index
|
// Test with Int index
|
||||||
let int_index = RowIndex::Int(vec![100, 101, 102, 103, 104, 105, 106]);
|
let int_index = RowIndex::Int(vec![100, 101, 102, 103, 104, 105, 106]);
|
||||||
let col_a_int = create_f64_typed_frame("A", vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], Some(int_index.clone()));
|
let col_a_int = create_f64_typed_frame(
|
||||||
let col_b_int = create_i64_typed_frame("B", vec![10, 20, 30, 40, 50, 60, 70], Some(int_index.clone()));
|
"A",
|
||||||
|
vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0],
|
||||||
|
Some(int_index.clone()),
|
||||||
|
);
|
||||||
|
let col_b_int = create_i64_typed_frame(
|
||||||
|
"B",
|
||||||
|
vec![10, 20, 30, 40, 50, 60, 70],
|
||||||
|
Some(int_index.clone()),
|
||||||
|
);
|
||||||
let df_int = DataFrame::new(
|
let df_int = DataFrame::new(
|
||||||
vec![col_a_int, col_b_int],
|
vec![col_a_int, col_b_int],
|
||||||
vec!["A".to_string(), "B".to_string()],
|
vec!["A".to_string(), "B".to_string()],
|
||||||
@ -1413,16 +1463,19 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_dataframe_head() {
|
fn test_dataframe_head() {
|
||||||
let col_a = create_f64_typed_frame("A", vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], None);
|
let col_a = create_f64_typed_frame(
|
||||||
let df = DataFrame::new(
|
"A",
|
||||||
vec![col_a],
|
vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0],
|
||||||
vec!["A".to_string()],
|
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
|
let df = DataFrame::new(vec![col_a], vec!["A".to_string()], None);
|
||||||
|
|
||||||
let head_df = df.head();
|
let head_df = df.head();
|
||||||
assert_eq!(head_df.rows(), DEFAULT_DISPLAY_ROWS);
|
assert_eq!(head_df.rows(), DEFAULT_DISPLAY_ROWS);
|
||||||
assert_eq!(head_df.column("A").as_f64().unwrap(), &[1.0, 2.0, 3.0, 4.0, 5.0]);
|
assert_eq!(
|
||||||
|
head_df.column("A").as_f64().unwrap(),
|
||||||
|
&[1.0, 2.0, 3.0, 4.0, 5.0]
|
||||||
|
);
|
||||||
|
|
||||||
// Test with fewer rows than DEFAULT_DISPLAY_ROWS
|
// Test with fewer rows than DEFAULT_DISPLAY_ROWS
|
||||||
let col_b = create_f64_typed_frame("B", vec![1.0, 2.0], None);
|
let col_b = create_f64_typed_frame("B", vec![1.0, 2.0], None);
|
||||||
@ -1434,16 +1487,19 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_dataframe_tail() {
|
fn test_dataframe_tail() {
|
||||||
let col_a = create_f64_typed_frame("A", vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], None);
|
let col_a = create_f64_typed_frame(
|
||||||
let df = DataFrame::new(
|
"A",
|
||||||
vec![col_a],
|
vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0],
|
||||||
vec!["A".to_string()],
|
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
|
let df = DataFrame::new(vec![col_a], vec!["A".to_string()], None);
|
||||||
|
|
||||||
let tail_df = df.tail();
|
let tail_df = df.tail();
|
||||||
assert_eq!(tail_df.rows(), DEFAULT_DISPLAY_ROWS);
|
assert_eq!(tail_df.rows(), DEFAULT_DISPLAY_ROWS);
|
||||||
assert_eq!(tail_df.column("A").as_f64().unwrap(), &[6.0, 7.0, 8.0, 9.0, 10.0]);
|
assert_eq!(
|
||||||
|
tail_df.column("A").as_f64().unwrap(),
|
||||||
|
&[6.0, 7.0, 8.0, 9.0, 10.0]
|
||||||
|
);
|
||||||
|
|
||||||
// Test with fewer rows than DEFAULT_DISPLAY_ROWS
|
// Test with fewer rows than DEFAULT_DISPLAY_ROWS
|
||||||
let col_b = create_f64_typed_frame("B", vec![1.0, 2.0], None);
|
let col_b = create_f64_typed_frame("B", vec![1.0, 2.0], None);
|
||||||
@ -1464,7 +1520,11 @@ mod tests {
|
|||||||
fn test_dataframe_display_basic() {
|
fn test_dataframe_display_basic() {
|
||||||
let col_a = create_f64_typed_frame("A", vec![1.0, 2.0, 3.0], None);
|
let col_a = create_f64_typed_frame("A", vec![1.0, 2.0, 3.0], None);
|
||||||
let col_b = create_i64_typed_frame("B", vec![10, 20, 30], None);
|
let col_b = create_i64_typed_frame("B", vec![10, 20, 30], None);
|
||||||
let col_c = create_string_typed_frame("C", vec!["x".to_string(), "y".to_string(), "z".to_string()], None);
|
let col_c = create_string_typed_frame(
|
||||||
|
"C",
|
||||||
|
vec!["x".to_string(), "y".to_string(), "z".to_string()],
|
||||||
|
None,
|
||||||
|
);
|
||||||
let df = DataFrame::new(
|
let df = DataFrame::new(
|
||||||
vec![col_a, col_b, col_c],
|
vec![col_a, col_b, col_c],
|
||||||
vec!["A".to_string(), "B".to_string(), "C".to_string()],
|
vec!["A".to_string(), "B".to_string(), "C".to_string()],
|
||||||
@ -1511,7 +1571,8 @@ mod tests {
|
|||||||
fn test_dataframe_display_truncation_cols() {
|
fn test_dataframe_display_truncation_cols() {
|
||||||
let mut cols_data = Vec::new();
|
let mut cols_data = Vec::new();
|
||||||
let mut col_names = Vec::new();
|
let mut col_names = Vec::new();
|
||||||
for i in 0..15 { // 15 columns, more than DEFAULT_DISPLAY_COLS
|
for i in 0..15 {
|
||||||
|
// 15 columns, more than DEFAULT_DISPLAY_COLS
|
||||||
cols_data.push((1..=3).map(|r| (i * 10 + r) as f64).collect());
|
cols_data.push((1..=3).map(|r| (i * 10 + r) as f64).collect());
|
||||||
col_names.push(format!("Col{}", i));
|
col_names.push(format!("Col{}", i));
|
||||||
}
|
}
|
||||||
@ -1538,7 +1599,8 @@ mod tests {
|
|||||||
fn test_dataframe_display_truncation_both() {
|
fn test_dataframe_display_truncation_both() {
|
||||||
let mut cols_data = Vec::new();
|
let mut cols_data = Vec::new();
|
||||||
let mut col_names = Vec::new();
|
let mut col_names = Vec::new();
|
||||||
for i in 0..15 { // 15 columns
|
for i in 0..15 {
|
||||||
|
// 15 columns
|
||||||
cols_data.push((1..=10).map(|r| (i * 10 + r) as f64).collect()); // 10 rows
|
cols_data.push((1..=10).map(|r| (i * 10 + r) as f64).collect()); // 10 rows
|
||||||
col_names.push(format!("Col{}", i));
|
col_names.push(format!("Col{}", i));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user