Skip to content
Merged
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 87 additions & 8 deletions pandas/tools/merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,7 @@ def _get_join_info(self):
_left_join_on_index(left_ax, right_ax, self.left_join_keys,
sort=self.sort)

elif self.left_index and self.how == 'right':
elif self.tleft_index and self.how == 'right':
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pls don't change code in the same PR as docs (unless its germane), I assume this was a typo though.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was. I'm sorry for the oversight.

join_index, right_indexer, left_indexer = \
_left_join_on_index(right_ax, left_ax, self.right_join_keys,
sort=self.sort)
Expand Down Expand Up @@ -1398,9 +1398,11 @@ def concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
copy=True):
"""
Concatenate pandas objects along a particular axis with optional set logic
along the other axes. Can also add a layer of hierarchical indexing on the
concatenation axis, which may be useful if the labels are the same (or
overlapping) on the passed axis number
along the other axes.

Can also add a layer of hierarchical indexing on the concatenation axis,
which may be useful if the labels are the same (or overlapping) on
the passed axis number

Parameters
----------
Expand Down Expand Up @@ -1436,13 +1438,90 @@ def concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
copy : boolean, default True
If False, do not copy data unnecessarily

Notes
-----
The keys, levels, and names arguments are all optional

Returns
-------
concatenated : type of objects

Notes
-----
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you are going to add examples, then this needs to be more complete, using examples from here:http://pandas.pydata.org/pandas-docs/stable/merging.html#concatenating-objects

certainly not all of these, but a quick selection (as well as having this link would be fine).

The keys, levels, and names arguments are all optional.

Examples
--------
Combine two ``Series``.

>>> s1 = pd.Series(['a', 'b'])
>>> s2 = pd.Series(['c', 'd'])
>>> pd.concat([s1, s2])
0 a
1 b
0 c
1 d
dtype: object

Clear the existing index and reset it in the result
by setting the ``ignore_index`` option to ``True``.

>>> s1 = pd.Series(['a', 'b'])
>>> s2 = pd.Series(['c', 'd'])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you leave out the redefinition of s1 and s2 ? (to save some vertical space) We can assume that the example build on each other.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will make this change and push it shortly.

>>> pd.concat([s1, s2], ignore_index=True)
0 a
1 b
2 c
3 d
dtype: object

Add a ``hierarchical index`` at the outermost level of
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need to add backtick quotes around 'hierarchical index'

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've fixed this.

the data.

>>> s1 = pd.Series(['a', 'b', 'c'])
>>> s2 = pd.Series(['c', 'd', 'e'])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here as well (you can use the same s1 and s2 I think)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change coming.

>>> c = pd.concat([s1, s2], keys=["s1", 's2',])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you use consistent quotes within the keys list (eg always single quotes)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've fixed this.

>>> c
s1 0 a
1 b
2 c
s2 0 c
1 d
2 e
dtype: object
>>> c.ix['s1']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The above example is good. But I would leave out the examples on indexing the result to keep the examples focused on concat (such examples would certainly be nice for the tutorial docs)

Maybe add an example with axis=1

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed the ix calls and added axis=1 to my list for later.

0 a
1 b
2 c
dtype: object
>>> c.ix['s2']
0 c
1 d
2 e
dtype: object
>>> c.ix['s1'].ix[0]
'a'

Combine two ``DataFrame`` objects with identical columns.

>>> df1 = pd.DataFrame(
... [['a', 1], ['b', 2]],
... columns=['letter', 'number']
... )
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the same here regarding style

>>> df1
letter number
0 a 1
1 b 2
>>> df2 = pd.DataFrame(
... [['c', 3], ['d', 4]],
... columns=['letter', 'number']
... )
>>> df2
letter number
0 c 3
1 d 4
>>> pd.concat([df1, df2])
letter number
0 a 1
1 b 2
0 c 3
1 d 4
"""
op = _Concatenator(objs, axis=axis, join_axes=join_axes,
ignore_index=ignore_index, join=join,
Expand Down