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