Skip to content

Commit

Permalink
Merge pull request #6670 from janezd/excel-nans
Browse files Browse the repository at this point in the history
[FIX] Writers: Store nans in StringVariable as empty strings instead of 'nan'
  • Loading branch information
markotoplak committed Dec 22, 2023
2 parents dcd7f72 + 047400d commit ef3f598
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
3 changes: 2 additions & 1 deletion Orange/data/io_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down
7 changes: 4 additions & 3 deletions Orange/data/tests/test_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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)

Expand All @@ -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)
Expand Down

0 comments on commit ef3f598

Please sign in to comment.