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')[源代码][源代码]#
对有序数据执行合并,可选择填充/插值。
专为有序数据设计,如时间序列数据。可选地执行分组合并(见示例)。
- 参数:
- 左DataFrame 或命名 Series
第一个要合并的 pandas 对象。
- 右DataFrame 或命名 Series
第二个要合并的 pandas 对象。
- 开标签或列表
要连接的字段名称。必须同时存在于两个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
数据的内插方法。
- 后缀类似列表,默认是 (“_x”, “_y”)
一个长度为2的序列,其中每个元素可以是可选的字符串,分别指示在 left 和 right 中重叠列名后添加的后缀。传递一个值 None 而不是字符串,以指示应保持 left 或 right 的列名不变,不添加后缀。至少一个值不能是 None。
- 如何{‘left’, ‘right’, ‘outer’, ‘inner’},默认 ‘outer’
left: 仅使用左框架中的键(SQL: left outer join)
right: 仅使用右帧中的键(SQL: 右外连接)
outer: 使用两个帧的键的并集(SQL: 完全外连接)
inner: 使用两个帧的键的交集(SQL: 内连接)。
- 返回:
- DataFrame
合并后的 DataFrame 输出类型将与 ‘left’ 相同,如果它是 DataFrame 的子类。
参见
合并
与数据库风格的连接合并。
merge_asof
在最近的键上合并。
示例
>>> 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