|
7 | 7 |
|
8 | 8 | import nose
|
9 | 9 |
|
10 |
| -from pandas import DataFrame |
| 10 | +from pandas import DataFrame, Series |
11 | 11 | import pandas as pd
|
12 | 12 |
|
13 | 13 | from numpy import nan
|
14 | 14 | import numpy as np
|
15 | 15 |
|
16 |
| -from pandas.core.reshape import melt, convert_dummies, lreshape |
| 16 | +from pandas.util.testing import assert_frame_equal |
| 17 | + |
| 18 | +from pandas.core.reshape import melt, convert_dummies, lreshape, get_dummies |
17 | 19 | import pandas.util.testing as tm
|
18 | 20 | from pandas.compat import StringIO, cPickle, range
|
19 | 21 |
|
@@ -145,6 +147,60 @@ def test_multiindex(self):
|
145 | 147 | self.assertEqual(res.columns.tolist(), ['CAP', 'low', 'value'])
|
146 | 148 |
|
147 | 149 |
|
| 150 | +class TestGetDummies(unittest.TestCase): |
| 151 | + def test_basic(self): |
| 152 | + s_list = list('abc') |
| 153 | + s_series = Series(s_list) |
| 154 | + s_series_index = Series(s_list, list('ABC')) |
| 155 | + |
| 156 | + expected = DataFrame({'a': {0: 1.0, 1: 0.0, 2: 0.0}, |
| 157 | + 'b': {0: 0.0, 1: 1.0, 2: 0.0}, |
| 158 | + 'c': {0: 0.0, 1: 0.0, 2: 1.0}}) |
| 159 | + assert_frame_equal(get_dummies(s_list), expected) |
| 160 | + assert_frame_equal(get_dummies(s_series), expected) |
| 161 | + |
| 162 | + expected.index = list('ABC') |
| 163 | + assert_frame_equal(get_dummies(s_series_index), expected) |
| 164 | + |
| 165 | + def test_just_na(self): |
| 166 | + just_na_list = [np.nan] |
| 167 | + just_na_series = Series(just_na_list) |
| 168 | + just_na_series_index = Series(just_na_list, index = ['A']) |
| 169 | + |
| 170 | + res_list = get_dummies(just_na_list) |
| 171 | + res_series = get_dummies(just_na_series) |
| 172 | + res_series_index = get_dummies(just_na_series_index) |
| 173 | + |
| 174 | + self.assertEqual(res_list.empty, True) |
| 175 | + self.assertEqual(res_series.empty, True) |
| 176 | + self.assertEqual(res_series_index.empty, True) |
| 177 | + |
| 178 | + self.assertEqual(res_list.index.tolist(), [0]) |
| 179 | + self.assertEqual(res_series.index.tolist(), [0]) |
| 180 | + self.assertEqual(res_series_index.index.tolist(), ['A']) |
| 181 | + |
| 182 | + def test_include_na(self): |
| 183 | + s = ['a', 'b', np.nan] |
| 184 | + res = get_dummies(s) |
| 185 | + exp = DataFrame({'a': {0: 1.0, 1: 0.0, 2: 0.0}, |
| 186 | + 'b': {0: 0.0, 1: 1.0, 2: 0.0}}) |
| 187 | + assert_frame_equal(res, exp) |
| 188 | + |
| 189 | + res_na = get_dummies(s, dummy_na=True) |
| 190 | + exp_na = DataFrame({nan: {0: 0.0, 1: 0.0, 2: 1.0}, |
| 191 | + 'a': {0: 1.0, 1: 0.0, 2: 0.0}, |
| 192 | + 'b': {0: 0.0, 1: 1.0, 2: 0.0}}).iloc[:, [1, 2, 0]] |
| 193 | + # hack (NaN handling in assert_index_equal) |
| 194 | + exp_na.columns = res_na.columns |
| 195 | + assert_frame_equal(res_na, exp_na) |
| 196 | + |
| 197 | + res_just_na = get_dummies([nan], dummy_na=True) |
| 198 | + exp_just_na = DataFrame({nan: {0: 1.0}}) |
| 199 | + # hack (NaN handling in assert_index_equal) |
| 200 | + exp_just_na.columns = res_just_na.columns |
| 201 | + assert_frame_equal(res_just_na, exp_just_na) |
| 202 | + |
| 203 | + |
148 | 204 | class TestConvertDummies(unittest.TestCase):
|
149 | 205 | def test_convert_dummies(self):
|
150 | 206 | df = DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
|
|
0 commit comments