excel 中的 MATCH 函数允许使用可选参数集,该参数集将返回小于给定值的最大值或大于给定值的最小值。

假设我有一个 DataFrame x

In [1]: x = pd.DataFrame(data=list(range(0, 11)), columns=["Obs"])

In [2]: x
Out[2]:
    Obs
0     0
1     1
2     2
3     3
4     4
5     5
6     6
7     7
8     8
9     9
10   10

还有一个数据框 y
In [3]: y = pd.DataFrame(data=[(-1, "Small"), (4, "Medium"), (7, "Large")],
                         columns=["Obs", "Cat"])

In [4]: y
Out[4]:
Obs     Cat
0   -1   Small
1    4  Medium
2    7   Large

如何使用 match_type 为 1 进行 INDEX-MATCH,这意味着它将遍历 Obs 中的每个值,并返回对应于“Obs”的“Cat”的值,该值是最大的值比和等于查找?

请注意,我想以某种矢量化方式执行此操作,而不是编写自定义函数并循环遍历第二个 DataFrame 的行。那将是相当低效的。

最佳答案

IIUC,你想要pd.merge_asof

pd.merge_asof(x, y)

关于python - 如何在 Pandas 中有效地完成 Excel 的 MATCH 函数(小于)的等效操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42032511/

10-12 15:47