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')[源代码]#

对有序数据执行合并,并可选择填充/插值。

专为有序数据(如时间序列数据)设计。可选择执行分组合并(参见示例)。

Parameters:
leftDataFrame 或命名的 Series
rightDataFrame 或命名的 Series
on标签或列表

用于连接的字段名称。必须在两个DataFrame中都存在。

left_on标签或列表,或类数组

左DataFrame中用于连接的字段名称。可以是长度与DataFrame相同的向量或向量列表,以使用特定向量作为连接键,而不是列。

right_on标签或列表,或类数组

右DataFrame中用于连接的字段名称,或根据left_on文档的每个左表的向量/列表。

left_by列名或列名列表

按分组列对左DataFrame进行分组,并逐块与右DataFrame合并。如果左表或右表是Series,则必须为None。

right_by列名或列名列表

按分组列对右DataFrame进行分组,并逐块与左DataFrame合并。如果左表或右表是Series,则必须为None。

fill_method{‘ffill’, None},默认None

数据的插值方法。

suffixes类列表,默认为(”_x”, “_y”)

一个长度为2的序列,其中每个元素是可选的字符串,表示要添加到`left`和`right`中重叠列名的后缀。通过提供`None`而不是字符串来表示`left`或`right`中的列名应保持不变,没有后缀。至少有一个值不能为None。

how{‘left’, ‘right’, ‘outer’, ‘inner’},默认’outer’
  • left:只使用左表的键(SQL:左外连接)。

  • right:只使用右表的键(SQL:右外连接)。

  • outer:使用两个表的键的并集(SQL:全外连接)。

  • inner:使用两个表的键的交集(SQL:内连接)。

Returns:
DataFrame

合并后的DataFrame输出类型将与’left’相同,如果它是一个DataFrame的子类。

参见

merge

使用类似数据库的连接进行合并。

merge_asof

按最近的键合并。

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