Skip to content

Commit d0bcb06

Browse files
committed
Fix column reordering
1 parent 304a5f4 commit d0bcb06

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

doc/source/whatsnew/v0.17.0.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ Bug Fixes
598598
- Bug in ``DataFrame.plot`` raises ``ValueError`` when color name is specified by multiple characters (:issue:`10387`)
599599

600600

601-
601+
- Bug in ``read_stata`` when reading a file with a different order set in ``columns`` (:issue:`10757`)
602602

603603
- Reading "famafrench" data via ``DataReader`` results in HTTP 404 error because of the website url is changed (:issue:`10591`).
604604
- Bug in ``read_msgpack`` where DataFrame to decode has duplicate column names (:issue:`9618`)

pandas/io/stata.py

+6-8
Original file line numberDiff line numberDiff line change
@@ -1614,14 +1614,12 @@ def _do_select_columns(self, data, columns):
16141614
typlist = []
16151615
fmtlist = []
16161616
lbllist = []
1617-
matched = set()
1618-
for i, col in enumerate(data.columns):
1619-
if col in column_set:
1620-
matched.update([col])
1621-
dtyplist.append(self.dtyplist[i])
1622-
typlist.append(self.typlist[i])
1623-
fmtlist.append(self.fmtlist[i])
1624-
lbllist.append(self.lbllist[i])
1617+
for col in columns:
1618+
i = data.columns.get_loc(col)
1619+
dtyplist.append(self.dtyplist[i])
1620+
typlist.append(self.typlist[i])
1621+
fmtlist.append(self.fmtlist[i])
1622+
lbllist.append(self.lbllist[i])
16251623

16261624
self.dtyplist = dtyplist
16271625
self.typlist = typlist

pandas/io/tests/test_stata.py

+8
Original file line numberDiff line numberDiff line change
@@ -782,6 +782,14 @@ def test_drop_column(self):
782782
columns=columns)
783783

784784
tm.assert_frame_equal(expected, dropped)
785+
786+
# See PR 10757
787+
columns = ['int_', 'long_', 'byte_']
788+
expected = expected[columns]
789+
reordered = read_stata(self.dta15_117, convert_dates=True,
790+
columns=columns)
791+
tm.assert_frame_equal(expected, reordered)
792+
785793
with tm.assertRaises(ValueError):
786794
columns = ['byte_', 'byte_']
787795
read_stata(self.dta15_117, convert_dates=True, columns=columns)

0 commit comments

Comments
 (0)