View returned when using squeeze=True with read_csv? · Issue #8217 · pandas-dev/pandas (original) (raw)

In [1]: import pandas as pd, StringIO

In [2]: csv = StringIO.StringIO('time,data\n0,10\n1,11\n2,12\n4,14\n5,15\n3,13')

In [3]: df = pd.read_csv(csv, index_col='time')

In [4]: df Out[4]: data time
0 10 1 11 2 12 4 14 5 15 3 13

In [5]: df.sort(inplace=True)

In [6]: df Out[6]: data time
0 10 1 11 2 12 3 13 4 14 5 15

Specifying squeeze=True returns a view instead of first-class object? Is this by design and if so, why?

As of 0.14.1, inplace=True is the default (related #5190) for series sorts so the following error will occur by default if squeeze=True was specified.

In [1]: import pandas as pd, StringIO

In [2]: csv = StringIO.StringIO('time,data\n0,10\n1,11\n2,12\n4,14\n5,15\n3,13')

In [3]: df = pd.read_csv(csv, index_col='time', squeeze=True)

In [4]: df Out[4]: data time
0 10 1 11 2 12 4 14 5 15 3 13

In [5]: df.sort(inplace=True)

ValueError Traceback (most recent call last) in () ----> 1 df.sort(inplace=True)

C:\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\core\series.pyc in sort(self, axis, ascending, kind, na_position, inplace) 1651 kind=kind, 1652 na_position=na_position, -> 1653 inplace=inplace) 1654 1655 def order(self, na_last=None, ascending=True, kind='quicksort', na_position='last', inplace=False):

C:\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\core\series.pyc in order(self, na_last, ascending, kind, na_position, inplace) 1684 # GH 5856/5853 1685 if inplace and self._is_cached: -> 1686 raise ValueError("This Series is a view of some other array, to " 1687 "sort in-place you must create a copy") 1688

ValueError: This Series is a view of some other array, to sort in-place you must create a copy