|
8 | 8 | import numpy as np |
9 | 9 | import pandas as pd |
10 | 10 |
|
11 | | -from pandas import Series, DataFrame |
| 11 | +from pandas import Series, DataFrame, compat |
12 | 12 |
|
13 | 13 | from pandas.compat import StringIO, u |
14 | 14 | from pandas.util.testing import (assert_series_equal, assert_almost_equal, |
15 | 15 | assert_frame_equal, ensure_clean) |
16 | 16 | import pandas.util.testing as tm |
| 17 | +import pandas.util._test_decorators as td |
17 | 18 |
|
18 | 19 | from .common import TestData |
19 | 20 |
|
@@ -138,6 +139,69 @@ def test_to_csv_path_is_none(self): |
138 | 139 | csv_str = s.to_csv(path=None) |
139 | 140 | assert isinstance(csv_str, str) |
140 | 141 |
|
| 142 | + def test_to_csv_compression_gzip(self): |
| 143 | + |
| 144 | + s = Series([0.123456, 0.234567, 0.567567], index=['A', 'B', 'C'], |
| 145 | + name='X') |
| 146 | + |
| 147 | + with ensure_clean() as filename: |
| 148 | + |
| 149 | + s.to_csv(filename, compression="gzip", header=True) |
| 150 | + |
| 151 | + # test the round trip - to_csv -> read_csv |
| 152 | + rs = pd.read_csv(filename, compression="gzip", index_col=0, |
| 153 | + squeeze=True) |
| 154 | + assert_series_equal(s, rs) |
| 155 | + |
| 156 | + # explicitly make sure file is gziped |
| 157 | + import gzip |
| 158 | + f = gzip.open(filename, 'rb') |
| 159 | + text = f.read().decode('utf8') |
| 160 | + f.close() |
| 161 | + assert s.name in text |
| 162 | + |
| 163 | + def test_to_csv_compression_bz2(self): |
| 164 | + |
| 165 | + s = Series([0.123456, 0.234567, 0.567567], index=['A', 'B', 'C'], |
| 166 | + name='X') |
| 167 | + |
| 168 | + with ensure_clean() as filename: |
| 169 | + |
| 170 | + s.to_csv(filename, compression="bz2", header=True) |
| 171 | + |
| 172 | + # test the round trip - to_csv -> read_csv |
| 173 | + rs = pd.read_csv(filename, compression="bz2", index_col=0, |
| 174 | + squeeze=True) |
| 175 | + assert_series_equal(s, rs) |
| 176 | + |
| 177 | + # explicitly make sure file is bz2ed |
| 178 | + import bz2 |
| 179 | + f = bz2.BZ2File(filename, 'rb') |
| 180 | + text = f.read().decode('utf8') |
| 181 | + f.close() |
| 182 | + assert s.name in text |
| 183 | + |
| 184 | + @td.skip_if_no_lzma |
| 185 | + def test_to_csv_compression_xz(self): |
| 186 | + |
| 187 | + s = Series([0.123456, 0.234567, 0.567567], index=['A', 'B', 'C'], |
| 188 | + name='X') |
| 189 | + |
| 190 | + with ensure_clean() as filename: |
| 191 | + |
| 192 | + s.to_csv(filename, compression="xz", header=True) |
| 193 | + |
| 194 | + # test the round trip - to_csv -> read_csv |
| 195 | + rs = pd.read_csv(filename, compression="xz", index_col=0, |
| 196 | + squeeze=True) |
| 197 | + assert_series_equal(s, rs) |
| 198 | + |
| 199 | + # explicitly make sure file is xzipped |
| 200 | + lzma = compat.import_lzma() |
| 201 | + f = lzma.open(filename, 'rb') |
| 202 | + assert_series_equal(s, pd.read_csv(f, index_col=0, squeeze=True)) |
| 203 | + f.close() |
| 204 | + |
141 | 205 |
|
142 | 206 | class TestSeriesIO(TestData): |
143 | 207 |
|
|
0 commit comments