Skip to content

Commit 487c06b

Browse files
committed
Add test for showing empty DataFrame and improve print output for empty DataFrames
1 parent e28256c commit 487c06b

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

python/tests/test_dataframe.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,13 @@ def test_filter(df):
252252
assert result.column(2) == pa.array([5])
253253

254254

255+
def test_show_empty(df, capsys):
256+
df_empty = df.filter(column("a") > literal(3))
257+
df_empty.show()
258+
captured = capsys.readouterr()
259+
assert "DataFrame has no rows" in captured.out
260+
261+
255262
def test_sort(df):
256263
df = df.sort(column("b").sort(ascending=False))
257264

src/dataframe.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -998,10 +998,13 @@ impl PyDataFrame {
998998
fn print_dataframe(py: Python, df: DataFrame) -> PyDataFusionResult<()> {
999999
// Get string representation of record batches
10001000
let batches = wait_for_future(py, df.collect())??;
1001-
let batches_as_string = pretty::pretty_format_batches(&batches);
1002-
let result = match batches_as_string {
1003-
Ok(batch) => format!("DataFrame()\n{batch}"),
1004-
Err(err) => format!("Error: {:?}", err.to_string()),
1001+
let result = if batches.is_empty() {
1002+
"DataFrame has no rows".to_string()
1003+
} else {
1004+
match pretty::pretty_format_batches(&batches) {
1005+
Ok(batch) => format!("DataFrame()\n{batch}"),
1006+
Err(err) => format!("Error: {:?}", err.to_string()),
1007+
}
10051008
};
10061009

10071010
// Import the Python 'builtins' module to access the print function

0 commit comments

Comments
 (0)