Python中的pandas.merge_asof()函数
这个方法是用来进行asof合并的。这类似于左键合并,只是我们以最近的键而不是相等的键进行匹配。两个DataFrame都必须按键进行排序。
语法 :pandas.merge_asof(left, right, on=None, left_on=None, right_on=None, left_index=False, right_index=False, by=None, left_by=None, right_by=None, suffixes=('_x', '_y'), tolerance=None, allow_exact_matches=True, direction='backward', )
参数 :
- left,right:数据帧
- on : label,要连接的字段名。必须在两个数据框架中找到。
- left_on : label,在左边数据框架中加入的字段名。
- right_on : label,在右边数据框架中加入的字段名。
- left_index : boolean, 使用左边数据框架的索引作为连接键。
- right_index : boolean, 使用右边数据框架的索引作为连接键。
下面是上述方法的实现和一些例子。
例子1 :
# importing package
import pandas
# creating data
left = pandas.DataFrame({'a': [1, 5, 10],
'left_val': ['a', 'b', 'c']})
right = pandas.DataFrame({'a': [1, 2, 3, 6, 7],
'right_val': [1, 2, 3, 6, 7]})
# view data
print(left)
print(right)
# applying merge_asof on data
print(pandas.merge_asof(left, right, on='a'))
print(pandas.merge_asof(left, right, on='a',
allow_exact_matches=False))
输出:
####
例子2 :
# importing package
import pandas
# creating data
left = pandas.DataFrame({'a': [1, 5, 10],
'left_val': ['a', 'b', 'c']})
right = pandas.DataFrame({'a': [1, 2, 3, 6, 7],
'right_val': [1, 2, 3, 6, 7]})
# view data
print(left)
print(right)
# applying merge_asof on data
print(pandas.merge_asof(left, right, on='a',
direction='forward'))
print(pandas.merge_asof(left, right, on='a',
direction='nearest'))
输出 :
例子3 :
# importing package
import pandas
# creating data
left = pandas.DataFrame({'left_val': ['a', 'b', 'c']},
index=[1, 5, 10])
right = pandas.DataFrame({'right_val': [1, 2, 3, 6, 7]},
index=[1, 2, 3, 6, 7])
# view data
print(left)
print(right)
# applying merge_asof on data
print(pandas.merge_asof(left, right, left_index=True,
right_index=True))
输出: