16
16
import pandas ._testing as tm
17
17
18
18
_seriesd = tm .getSeriesData ()
19
- _tsd = tm .getTimeSeriesData ()
20
19
21
20
_frame = DataFrame (_seriesd )
22
- _intframe = DataFrame ({k : v .astype (np .int64 ) for k , v in _seriesd .items ()})
23
21
24
- _tsframe = DataFrame (_tsd )
25
22
_cat_frame = _frame .copy ()
26
23
cat = ["bah" ] * 5 + ["bar" ] * 5 + ["baz" ] * 5 + ["foo" ] * (len (_cat_frame ) - 15 )
27
24
_cat_frame .index = pd .CategoricalIndex (cat , name = "E" )
28
25
_cat_frame ["E" ] = list (reversed (cat ))
29
26
_cat_frame ["sort" ] = np .arange (len (_cat_frame ), dtype = "int64" )
30
27
31
- _mixed_frame = _frame .copy ()
32
-
33
28
34
29
def assert_json_roundtrip_equal (result , expected , orient ):
35
30
if orient == "records" or orient == "values" :
@@ -43,17 +38,10 @@ def assert_json_roundtrip_equal(result, expected, orient):
43
38
class TestPandasContainer :
44
39
@pytest .fixture (autouse = True )
45
40
def setup (self ):
46
- self .intframe = _intframe .copy ()
47
- self .tsframe = _tsframe .copy ()
48
- self .mixed_frame = _mixed_frame .copy ()
49
41
self .categorical = _cat_frame .copy ()
50
42
51
43
yield
52
44
53
- del self .intframe
54
- del self .tsframe
55
- del self .mixed_frame
56
-
57
45
def test_frame_double_encoded_labels (self , orient ):
58
46
df = DataFrame (
59
47
[["a" , "b" ], ["c" , "d" ]],
@@ -137,12 +125,12 @@ def test_roundtrip_simple(self, orient, convert_axes, numpy, dtype, float_frame)
137
125
@pytest .mark .parametrize ("dtype" , [False , np .int64 ])
138
126
@pytest .mark .parametrize ("convert_axes" , [True , False ])
139
127
@pytest .mark .parametrize ("numpy" , [True , False ])
140
- def test_roundtrip_intframe (self , orient , convert_axes , numpy , dtype ):
141
- data = self . intframe .to_json (orient = orient )
128
+ def test_roundtrip_intframe (self , orient , convert_axes , numpy , dtype , int_frame ):
129
+ data = int_frame .to_json (orient = orient )
142
130
result = pd .read_json (
143
131
data , orient = orient , convert_axes = convert_axes , numpy = numpy , dtype = dtype
144
132
)
145
- expected = self . intframe . copy ()
133
+ expected = int_frame
146
134
if (
147
135
numpy
148
136
and (is_platform_32bit () or is_platform_windows ())
@@ -236,13 +224,13 @@ def test_roundtrip_empty(self, orient, convert_axes, numpy, empty_frame):
236
224
237
225
@pytest .mark .parametrize ("convert_axes" , [True , False ])
238
226
@pytest .mark .parametrize ("numpy" , [True , False ])
239
- def test_roundtrip_timestamp (self , orient , convert_axes , numpy ):
227
+ def test_roundtrip_timestamp (self , orient , convert_axes , numpy , datetime_frame ):
240
228
# TODO: improve coverage with date_format parameter
241
- data = self . tsframe .to_json (orient = orient )
229
+ data = datetime_frame .to_json (orient = orient )
242
230
result = pd .read_json (
243
231
data , orient = orient , convert_axes = convert_axes , numpy = numpy
244
232
)
245
- expected = self . tsframe .copy ()
233
+ expected = datetime_frame .copy ()
246
234
247
235
if not convert_axes : # one off for ts handling
248
236
# DTI gets converted to epoch values
@@ -730,34 +718,33 @@ def test_reconstruction_index(self):
730
718
result = read_json (df .to_json ())
731
719
tm .assert_frame_equal (result , df )
732
720
733
- def test_path (self , float_frame ):
721
+ def test_path (self , float_frame , int_frame , datetime_frame ):
734
722
with tm .ensure_clean ("test.json" ) as path :
735
723
for df in [
736
724
float_frame ,
737
- self .intframe ,
738
- self .tsframe ,
739
- self .mixed_frame ,
725
+ int_frame ,
726
+ datetime_frame ,
740
727
]:
741
728
df .to_json (path )
742
729
read_json (path )
743
730
744
- def test_axis_dates (self , datetime_series ):
731
+ def test_axis_dates (self , datetime_series , datetime_frame ):
745
732
746
733
# frame
747
- json = self . tsframe .to_json ()
734
+ json = datetime_frame .to_json ()
748
735
result = read_json (json )
749
- tm .assert_frame_equal (result , self . tsframe )
736
+ tm .assert_frame_equal (result , datetime_frame )
750
737
751
738
# series
752
739
json = datetime_series .to_json ()
753
740
result = read_json (json , typ = "series" )
754
741
tm .assert_series_equal (result , datetime_series , check_names = False )
755
742
assert result .name is None
756
743
757
- def test_convert_dates (self , datetime_series ):
744
+ def test_convert_dates (self , datetime_series , datetime_frame ):
758
745
759
746
# frame
760
- df = self . tsframe . copy ()
747
+ df = datetime_frame
761
748
df ["date" ] = Timestamp ("20130101" )
762
749
763
750
json = df .to_json ()
@@ -837,8 +824,8 @@ def test_convert_dates_infer(self, infer_word):
837
824
("20130101 20:43:42.123456789" , "ns" ),
838
825
],
839
826
)
840
- def test_date_format_frame (self , date , date_unit ):
841
- df = self . tsframe . copy ()
827
+ def test_date_format_frame (self , date , date_unit , datetime_frame ):
828
+ df = datetime_frame
842
829
843
830
df ["date" ] = Timestamp (date )
844
831
df .iloc [1 , df .columns .get_loc ("date" )] = pd .NaT
@@ -853,8 +840,8 @@ def test_date_format_frame(self, date, date_unit):
853
840
expected ["date" ] = expected ["date" ].dt .tz_localize ("UTC" )
854
841
tm .assert_frame_equal (result , expected )
855
842
856
- def test_date_format_frame_raises (self ):
857
- df = self . tsframe . copy ()
843
+ def test_date_format_frame_raises (self , datetime_frame ):
844
+ df = datetime_frame
858
845
msg = "Invalid value 'foo' for option 'date_unit'"
859
846
with pytest .raises (ValueError , match = msg ):
860
847
df .to_json (date_format = "iso" , date_unit = "foo" )
@@ -890,8 +877,8 @@ def test_date_format_series_raises(self, datetime_series):
890
877
ts .to_json (date_format = "iso" , date_unit = "foo" )
891
878
892
879
@pytest .mark .parametrize ("unit" , ["s" , "ms" , "us" , "ns" ])
893
- def test_date_unit (self , unit ):
894
- df = self . tsframe . copy ()
880
+ def test_date_unit (self , unit , datetime_frame ):
881
+ df = datetime_frame
895
882
df ["date" ] = Timestamp ("20130101 20:43:42" )
896
883
dl = df .columns .get_loc ("date" )
897
884
df .iloc [1 , dl ] = Timestamp ("19710101 20:43:42" )
0 commit comments