Skip to content

Commit ef3f598

Browse files
authored
Merge pull request #6670 from janezd/excel-nans
[FIX] Writers: Store nans in StringVariable as empty strings instead of 'nan'
2 parents dcd7f72 + 047400d commit ef3f598

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

Orange/data/io_base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from glob import glob
1616

1717
import numpy as np
18+
import pandas
1819

1920
from Orange.data import Table, Domain, Variable, DiscreteVariable, \
2021
StringVariable, ContinuousVariable, TimeVariable
@@ -665,7 +666,7 @@ def formatter(cls, var):
665666
elif var.is_discrete:
666667
return lambda value: "" if isnan(value) else var.values[int(value)]
667668
elif var.is_string:
668-
return lambda value: value
669+
return lambda value: "" if pandas.isnull(value) else value
669670
else:
670671
return var.repr_val
671672

Orange/data/tests/test_io.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def setUp(self):
122122
self.domain,
123123
np.array([[1, 0.5], [2, np.nan], [np.nan, 1.0625]]),
124124
np.array([3, 1, 7]),
125-
np.array(["foo bar baz".split()]).T
125+
np.array([["foo", "bar", np.nan]], dtype=object).T
126126
)
127127

128128
def test_write_tab(self):
@@ -137,7 +137,7 @@ def test_write_tab(self):
137137
class\tmeta\t\t
138138
3\tfoo\ty\t0.500
139139
1\tbar\tz\t
140-
7\tbaz\t\t1.06250""".strip())
140+
7\t\t\t1.06250""".strip())
141141
finally:
142142
os.remove(fname)
143143

@@ -149,7 +149,8 @@ def test_roundtrip_xlsx(self):
149149
data = ExcelReader(fname).read()
150150
np.testing.assert_equal(data.X, self.data.X)
151151
np.testing.assert_equal(data.Y, self.data.Y)
152-
np.testing.assert_equal(data.metas, self.data.metas)
152+
np.testing.assert_equal(data.metas[:2], self.data.metas[:2])
153+
self.assertEqual(data.metas[2, 0], "")
153154
np.testing.assert_equal(data.domain, self.data.domain)
154155
finally:
155156
os.remove(fname)

0 commit comments

Comments
 (0)