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
rightDataFrame or named Series
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

>>> frompandasimport 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