Skip to content

Commit 92fdeff

Browse files
cpcloudhayd
authored andcommitted
CLN/ENH: clean up docstrings remove some cruft and generalize
1 parent 02f2c42 commit 92fdeff

File tree

1 file changed

+37
-28
lines changed

1 file changed

+37
-28
lines changed

pandas/core/reshape.py

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,20 @@
55

66
import numpy as np
77

8+
import six
9+
810
from pandas.core.series import Series
911
from pandas.core.frame import DataFrame
1012

1113
from pandas.core.categorical import Categorical
1214
from pandas.core.common import (notnull, _ensure_platform_int, _maybe_promote,
13-
_maybe_upcast, isnull)
15+
isnull)
1416
from pandas.core.groupby import (get_group_index, _compress_group_index,
1517
decons_group_index)
1618
import pandas.core.common as com
1719
import pandas.algos as algos
18-
from pandas import lib
1920

20-
from pandas.core.index import MultiIndex, Index
21+
from pandas.core.index import MultiIndex
2122

2223

2324
class ReshapeError(Exception):
@@ -35,21 +36,26 @@ class _Unstacker(object):
3536
3637
Examples
3738
--------
39+
>>> import pandas as pd
40+
>>> index = pd.MultiIndex.from_tuples([('one', 'a'), ('one', 'b'),
41+
... ('two', 'a'), ('two', 'b')])
42+
>>> s = pd.Series(np.arange(1.0, 5.0), index=index)
3843
>>> s
39-
one a 1.
40-
one b 2.
41-
two a 3.
42-
two b 4.
44+
one a 1
45+
b 2
46+
two a 3
47+
b 4
48+
dtype: float64
4349
4450
>>> s.unstack(level=-1)
4551
a b
46-
one 1. 2.
47-
two 3. 4.
52+
one 1 2
53+
two 3 4
4854
4955
>>> s.unstack(level=0)
5056
one two
51-
a 1. 2.
52-
b 3. 4.
57+
a 1 2
58+
b 3 4
5359
5460
Returns
5561
-------
@@ -159,7 +165,7 @@ def get_result(self):
159165
values[j] = orig_values[i]
160166
else:
161167
index = index.take(self.unique_groups)
162-
168+
163169
return DataFrame(values, index=index, columns=columns)
164170

165171
def get_new_values(self):
@@ -617,9 +623,10 @@ def melt(frame, id_vars=None, value_vars=None,
617623
618624
Examples
619625
--------
626+
>>> import pandas as pd
620627
>>> df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
621-
'B': {0: 1, 1: 3, 2: 5},
622-
'C': {0: 2, 1: 4, 2: 6}})
628+
... 'B': {0: 1, 1: 3, 2: 5},
629+
... 'C': {0: 2, 1: 4, 2: 6}})
623630
624631
>>> df
625632
A B C
@@ -632,7 +639,7 @@ def melt(frame, id_vars=None, value_vars=None,
632639
0 a B 1
633640
1 b B 3
634641
2 c B 5
635-
642+
636643
>>> melt(df, id_vars=['A'], value_vars=['B'],
637644
... var_name='myVarname', value_name='myValname')
638645
A myVarname myValname
@@ -679,9 +686,13 @@ def melt(frame, id_vars=None, value_vars=None,
679686
if len(frame.columns.names) == len(set(frame.columns.names)):
680687
var_name = frame.columns.names
681688
else:
682-
var_name = ['variable_%s' % i for i in range(len(frame.columns.names))]
689+
var_name = ['variable_%s' % i for i in
690+
xrange(len(frame.columns.names))]
683691
else:
684-
var_name = frame.columns.name if frame.columns.name is not None else 'variable'
692+
var_name = [frame.columns.name if frame.columns.name is not None
693+
else 'variable']
694+
if isinstance(var_name, six.string_types):
695+
var_name = [var_name]
685696

686697
N, K = frame.shape
687698
K -= len(id_vars)
@@ -690,17 +701,12 @@ def melt(frame, id_vars=None, value_vars=None,
690701
for col in id_vars:
691702
mdata[col] = np.tile(frame.pop(col).values, K)
692703

693-
if isinstance(var_name, list):
694-
mcolumns = id_vars + var_name + [value_name]
695-
else:
696-
mcolumns = id_vars + [var_name, value_name]
704+
mcolumns = id_vars + var_name + [value_name]
697705

698706
mdata[value_name] = frame.values.ravel('F')
699-
if isinstance(frame.columns, MultiIndex):
700-
for i, col in enumerate(var_name):
701-
mdata[col] = np.asarray(frame.columns.get_level_values(i)).repeat(N)
702-
else: # assume isinstance(frame.columns, Index):
703-
mdata[var_name] = np.asarray(frame.columns).repeat(N)
707+
for i, col in enumerate(var_name):
708+
# asanyarray will keep the columns as an Index
709+
mdata[col] = np.asanyarray(frame.columns.get_level_values(i)).repeat(N)
704710

705711
return DataFrame(mdata, columns=mcolumns)
706712

@@ -718,13 +724,16 @@ def lreshape(data, groups, dropna=True, label=None):
718724
719725
Examples
720726
--------
727+
>>> import pandas as pd
728+
>>> data = pd.DataFrame({'hr1': [514, 573], 'hr2': [545, 526],
729+
... 'team': ['Red Sox', 'Yankees'],
730+
... 'year1': [2007, 2008], 'year2': [2008, 2008]})
721731
>>> data
722732
hr1 hr2 team year1 year2
723733
0 514 545 Red Sox 2007 2008
724734
1 573 526 Yankees 2007 2008
725735
726-
>>> pd.lreshape(data, {'year': ['year1', 'year2'],
727-
'hr': ['hr1', 'hr2']})
736+
>>> pd.lreshape(data, {'year': ['year1', 'year2'], 'hr': ['hr1', 'hr2']})
728737
team hr year
729738
0 Red Sox 514 2007
730739
1 Yankees 573 2007

0 commit comments

Comments
 (0)