Skip to content

Commit f26cf9e

Browse files
author
K.-Michael Aye
committed
moving left() and right() helpers from core to frame and adding tests
1 parent 61e102a commit f26cf9e

File tree

3 files changed

+41
-18
lines changed

3 files changed

+41
-18
lines changed

pandas/core/frame.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1733,6 +1733,24 @@ def _getitem_frame(self, key):
17331733
raise ValueError('Must pass DataFrame with boolean values only')
17341734
return self.where(key)
17351735

1736+
def left(self, n=5):
1737+
"""
1738+
Return first n columns
1739+
"""
1740+
l = self.shape[1]
1741+
if l == 0 or n == 0:
1742+
return self
1743+
return self.iloc[:, :n]
1744+
1745+
def right(self, n=5):
1746+
"""
1747+
Return last n columns
1748+
"""
1749+
l = self.shape[1]
1750+
if l == 0 or n == 0:
1751+
return self
1752+
return self.iloc[:, -n:]
1753+
17361754
def query(self, expr, **kwargs):
17371755
"""Query the columns of a frame with a boolean expression.
17381756

pandas/core/generic.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1794,24 +1794,6 @@ def tail(self, n=5):
17941794
return self
17951795
return self.iloc[-n:]
17961796

1797-
def left(self, n=5):
1798-
"""
1799-
Return first n columns
1800-
"""
1801-
l = self.shape[1]
1802-
if l == 0 or n == 0:
1803-
return self
1804-
return self.iloc[:, :n]
1805-
1806-
def right(self, n=5):
1807-
"""
1808-
Return last n columns
1809-
"""
1810-
l = self.shape[1]
1811-
if l == 0 or n == 0:
1812-
return self
1813-
return self.iloc[:, -n:]
1814-
18151797
#----------------------------------------------------------------------
18161798
# Attribute access
18171799

pandas/tests/test_frame.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4470,6 +4470,29 @@ def test_head_tail(self):
44704470
assert_frame_equal(empty_df.tail(), empty_df)
44714471
assert_frame_equal(empty_df.head(), empty_df)
44724472

4473+
def test_left_right(self):
4474+
assert_frame_equal(self.frame.left(), self.frame.iloc[:, :5])
4475+
assert_frame_equal(self.frame.right(), self.frame.iloc[:, -5:])
4476+
assert_frame_equal(self.frame.left(0), self.frame)
4477+
assert_frame_equal(self.frame.right(0), self.frame)
4478+
assert_frame_equal(self.frame.left(-1), self.frame.iloc[:, :-1])
4479+
assert_frame_equal(self.frame.right(-1), self.frame.iloc[:, 1:])
4480+
assert_frame_equal(self.frame.left(1), self.frame.iloc[:, :1])
4481+
assert_frame_equal(self.frame.right(1), self.frame.iloc[:, -1:])
4482+
# with a float index
4483+
df = self.frame.copy()
4484+
df.index = np.arange(len(self.frame)) + 0.1
4485+
assert_frame_equal(df.left(), df.iloc[:, :5])
4486+
assert_frame_equal(df.right(), df.iloc[:, -5:])
4487+
assert_frame_equal(df.left(0), df)
4488+
assert_frame_equal(df.right(0), df)
4489+
assert_frame_equal(df.left(-1), df.iloc[:, :-1])
4490+
assert_frame_equal(df.right(-1), df.iloc[:, 1:])
4491+
#test empty dataframe
4492+
empty_df = DataFrame()
4493+
assert_frame_equal(empty_df.right(), empty_df)
4494+
assert_frame_equal(empty_df.left(), empty_df)
4495+
44734496
def test_insert(self):
44744497
df = DataFrame(np.random.randn(5, 3), index=np.arange(5),
44754498
columns=['c', 'b', 'a'])

0 commit comments

Comments
 (0)