@@ -620,3 +620,36 @@ def test_read_csv_multi_header_length_check(all_parsers):
620
620
ParserError , match = "Header rows must have an equal number of columns."
621
621
):
622
622
parser .read_csv (StringIO (case ), header = [0 , 2 ])
623
+
624
+
625
+ @skip_pyarrow
626
+ def test_header_none_and_implicit_index (all_parsers ):
627
+ # GH#22144
628
+ parser = all_parsers
629
+ data = "x,1,5\n y,2\n z,3\n "
630
+ result = parser .read_csv (StringIO (data ), names = ["a" , "b" ], header = None )
631
+ expected = DataFrame (
632
+ {"a" : [1 , 2 , 3 ], "b" : [5 , np .nan , np .nan ]}, index = ["x" , "y" , "z" ]
633
+ )
634
+ tm .assert_frame_equal (result , expected )
635
+
636
+
637
+ @skip_pyarrow
638
+ def test_header_none_and_implicit_index_in_second_row (all_parsers ):
639
+ # GH#22144
640
+ parser = all_parsers
641
+ data = "x,1\n y,2,5\n z,3\n "
642
+ with pytest .raises (ParserError , match = "Expected 2 fields in line 2, saw 3" ):
643
+ parser .read_csv (StringIO (data ), names = ["a" , "b" ], header = None )
644
+
645
+
646
+ @skip_pyarrow
647
+ def test_header_none_and_on_bad_lines_skip (all_parsers ):
648
+ # GH#22144
649
+ parser = all_parsers
650
+ data = "x,1\n y,2,5\n z,3\n "
651
+ result = parser .read_csv (
652
+ StringIO (data ), names = ["a" , "b" ], header = None , on_bad_lines = "skip"
653
+ )
654
+ expected = DataFrame ({"a" : ["x" , "z" ], "b" : [1 , 3 ]})
655
+ tm .assert_frame_equal (result , expected )
0 commit comments