concat(objs: 'Iterable[NDFrame] | Mapping[Hashable, NDFrame]', axis: 'Axis' = 0, join: 'str' = 'outer', ignore_index: 'bool' = False, keys=None, levels=None, names=None, verify_integrity: 'bool' = False, sort: 'bool' = False, copy: 'bool' = True) -> 'DataFrame | Series'
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.
The keys, levels, and names arguments are all optional.
A walkthrough of how this method fits in with other tools for combining pandas objects can be found :None:None:`here
<https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html>`
.
If a mapping is passed, the sorted keys will be used as the :None:None:`keys`
argument, unless it is passed, in which case the values will be selected (see below). Any None objects will be dropped silently unless they are all None in which case a ValueError will be raised.
The axis to concatenate along.
How to handle indexes on other axis (or axes).
If True, do not use the index values along the concatenation axis. The resulting axis will be labeled 0, ..., n - 1. This is useful if you are concatenating objects where the concatenation axis does not have meaningful indexing information. Note the index values on the other axes are still respected in the join.
If multiple levels passed, should contain tuples. Construct hierarchical index using the passed keys as the outermost level.
Specific levels (unique values) to use for constructing a MultiIndex. Otherwise they will be inferred from the keys.
Names for the levels in the resulting hierarchical index.
Check whether the new concatenated axis contains duplicates. This can be very expensive relative to the actual data concatenation.
Sort non-concatenation axis if it is not already aligned when :None:None:`join`
is 'outer'. This has no effect when join='inner'
, which already preserves the order of the non-concatenation axis.
Changed to not sort by default.
If False, do not copy data unnecessarily.
When concatenating all Series
along the index (axis=0), a Series
is returned. When objs
contains at least one DataFrame
, a DataFrame
is returned. When concatenating along the columns (axis=1), a DataFrame
is returned.
Concatenate pandas objects along a particular axis with optional set logic along the other axes.
DataFrame.append
Concatenate DataFrames.
DataFrame.join
Join DataFrames using indexes.
DataFrame.merge
Merge DataFrames by indexes or columns.
Series.append
Concatenate Series.
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
.
>>> 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 the data with the keys
option.
>>> pd.concat([s1, s2], keys=['s1', 's2']) s1 0 a 1 b s2 0 c 1 d dtype: object
Label the index keys you create with the names
option.
>>> pd.concat([s1, s2], keys=['s1', 's2'],
... names=['Series name', 'Row ID']) Series name Row ID s1 0 a 1 b s2 0 c 1 d dtype: object
Combine two DataFrame
objects with identical columns.
>>> df1 = pd.DataFrame([['a', 1], ['b', 2]],This example is valid syntax, but we were not able to check execution
... columns=['letter', 'number'])
... df1 letter number 0 a 1 1 b 2
>>> df2 = pd.DataFrame([['c', 3], ['d', 4]],This example is valid syntax, but we were not able to check execution
... 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
Combine DataFrame
objects with overlapping columns and return everything. Columns outside the intersection will be filled with NaN
values.
>>> df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],This example is valid syntax, but we were not able to check execution
... columns=['letter', 'number', 'animal'])
... df3 letter number animal 0 c 3 cat 1 d 4 dog
>>> pd.concat([df1, df3], sort=False) letter number animal 0 a 1 NaN 1 b 2 NaN 0 c 3 cat 1 d 4 dog
Combine DataFrame
objects with overlapping columns and return only those that are shared by passing inner
to the join
keyword argument.
>>> pd.concat([df1, df3], join="inner") letter number 0 a 1 1 b 2 0 c 3 1 d 4
Combine DataFrame
objects horizontally along the x axis by passing in axis=1
.
>>> df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],
... columns=['animal', 'name'])
... pd.concat([df1, df4], axis=1) letter number animal name 0 a 1 bird polly 1 b 2 monkey george
Prevent the result from including duplicate index values with the verify_integrity
option.
>>> df5 = pd.DataFrame([1], index=['a'])This example is valid syntax, but we were not able to check execution
... df5 0 a 1
>>> df6 = pd.DataFrame([2], index=['a'])This example is valid syntax, but we were not able to check execution
... df6 0 a 2
>>> pd.concat([df5, df6], verify_integrity=True) Traceback (most recent call last): ... ValueError: Indexes have overlapping values: ['a']See :
Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.
Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)
SVG is more flexible but power hungry; and does not scale well to 50 + nodes.
All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them