diff --git a/Orange/data/io_base.py b/Orange/data/io_base.py index 521454f3e36..914d1d3377b 100644 --- a/Orange/data/io_base.py +++ b/Orange/data/io_base.py @@ -15,6 +15,7 @@ from glob import glob import numpy as np +import pandas from Orange.data import Table, Domain, Variable, DiscreteVariable, \ StringVariable, ContinuousVariable, TimeVariable @@ -665,7 +666,7 @@ def formatter(cls, var): elif var.is_discrete: return lambda value: "" if isnan(value) else var.values[int(value)] elif var.is_string: - return lambda value: value + return lambda value: "" if pandas.isnull(value) else value else: return var.repr_val diff --git a/Orange/data/tests/test_io.py b/Orange/data/tests/test_io.py index 061d9766109..01187f26b30 100644 --- a/Orange/data/tests/test_io.py +++ b/Orange/data/tests/test_io.py @@ -122,7 +122,7 @@ def setUp(self): self.domain, np.array([[1, 0.5], [2, np.nan], [np.nan, 1.0625]]), np.array([3, 1, 7]), - np.array(["foo bar baz".split()]).T + np.array([["foo", "bar", np.nan]], dtype=object).T ) def test_write_tab(self): @@ -137,7 +137,7 @@ def test_write_tab(self): class\tmeta\t\t 3\tfoo\ty\t0.500 1\tbar\tz\t -7\tbaz\t\t1.06250""".strip()) +7\t\t\t1.06250""".strip()) finally: os.remove(fname) @@ -149,7 +149,8 @@ def test_roundtrip_xlsx(self): data = ExcelReader(fname).read() np.testing.assert_equal(data.X, self.data.X) np.testing.assert_equal(data.Y, self.data.Y) - np.testing.assert_equal(data.metas, self.data.metas) + np.testing.assert_equal(data.metas[:2], self.data.metas[:2]) + self.assertEqual(data.metas[2, 0], "") np.testing.assert_equal(data.domain, self.data.domain) finally: os.remove(fname)