@@ -2285,7 +2285,27 @@ def test_large_number():
2285
2285
tm .assert_series_equal (result , expected )
2286
2286
2287
2287
2288
- def test_to_json_table_numeric_column_names ():
2289
- df = DataFrame ([[1 , 2 ], [3 , 4 ]], columns = [1 , 2 ])
2290
- with pytest .raises (ValueError , match = "Column names must be strings" ):
2291
- df .to_json (orient = "table" )
2288
+ @pytest .mark .parametrize (
2289
+ "df, should_fail" ,
2290
+ [
2291
+ (DataFrame ([[1 , 2 ], [3 , 4 ]], columns = [1 , 2 ]), True ),
2292
+ (DataFrame ([[1 , 2 ], [3 , 4 ]], columns = [1.1 , 2.2 ]), True ),
2293
+ (DataFrame ([[1 , 2 ], [3 , 4 ]], columns = [None , "valid" ]), True ),
2294
+ (DataFrame ([[1 , 2 ], [3 , 4 ]], columns = [True , False ]), True ),
2295
+ (DataFrame ([[1 , 2 ], [4 , 5 ]], columns = ["a" , "b" ]), False ),
2296
+ ],
2297
+ )
2298
+ def test_to_json_table_non_string_column_names (df , should_fail ):
2299
+ if should_fail :
2300
+ with pytest .raises (ValueError , match = "Column names must be strings" ):
2301
+ df .to_json (orient = "table" )
2302
+ else :
2303
+ expected = {
2304
+ "schema" : pd .io .json .build_table_schema (df , index = False ),
2305
+ "data" : df .to_dict (orient = "records" ),
2306
+ }
2307
+
2308
+ result = df .to_json (orient = "table" , index = False )
2309
+ result = json .loads (result )
2310
+
2311
+ assert result == expected
0 commit comments