pandas.merge_ordered#

pandas.merge_ordered(left, right, on=None, left_on=None, right_on=None, left_by=None, right_by=None, fill_method=None, suffixes=('_x', '_y'), how='outer')[source]#

Perform a merge for ordered data with optional filling/interpolation.

Designed for ordered data like time series data. Optionally perform group-wise merge (see examples).

Parameters:
leftDataFrame or named Series

First pandas object to merge.

rightDataFrame or named Series

Second pandas object to merge.

onlabel or list

Field names to join on. Must be found in both DataFrames.

left_onlabel or list, or array-like

Field names to join on in left DataFrame. Can be a vector or list of vectors of the length of the DataFrame to use a particular vector as the join key instead of columns.

right_onlabel or list, or array-like

Field names to join on in right DataFrame or vector/list of vectors per left_on docs.

left_bycolumn name or list of column names

Group left DataFrame by group columns and merge piece by piece with right DataFrame. Must be None if either left or right are a Series.

right_bycolumn name or list of column names

Group right DataFrame by group columns and merge piece by piece with left DataFrame. Must be None if either left or right are a Series.

fill_method{‘ffill’, None}, default None

Interpolation method for data.

suffixeslist-like, default is (“_x”, “_y”)

A length-2 sequence where each element is optionally a string indicating the suffix to add to overlapping column names in left and right respectively. Pass a value of None instead of a string to indicate that the column name from left or right should be left as-is, with no suffix. At least one of the values must not be None.

how{‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘outer’
  • left: use only keys from left frame (SQL: left outer join)

  • right: use only keys from right frame (SQL: right outer join)

  • outer: use union of keys from both frames (SQL: full outer join)

  • inner: use intersection of keys from both frames (SQL: inner join).

Returns:
DataFrame

The merged DataFrame output type will be the same as ‘left’, if it is a subclass of DataFrame.

See also

merge

Merge with a database-style join.

merge_asof

Merge on nearest keys.

Examples

>>> from pandas import merge_ordered
>>> df1 = pd.DataFrame(
...     {
...         "key": ["a", "c", "e", "a", "c", "e"],
...         "lvalue": [1, 2, 3, 1, 2, 3],
...         "group": ["a", "a", "a", "b", "b", "b"],
...     }
... )
>>> df1
  key  lvalue group
0   a       1     a
1   c       2     a
2   e       3     a
3   a       1     b
4   c       2     b
5   e       3     b
>>> df2 = pd.DataFrame({"key": ["b", "c", "d"], "rvalue": [1, 2, 3]})
>>> df2
  key  rvalue
0   b       1
1   c       2
2   d       3
>>> merge_ordered(df1, df2, fill_method="ffill", left_by="group")
  key  lvalue group  rvalue
0   a       1     a     NaN
1   b       1     a     1.0
2   c       2     a     2.0
3   d       2     a     3.0
4   e       3     a     3.0
5   a       1     b     NaN
6   b       1     b     1.0
7   c       2     b     2.0
8   d       2     b     3.0
9   e       3     b     3.0