python - Pandas 在另一个表的范围内查找值

标签 python pandas dataframe

在下面的示例中,我试图检查表 1 中的“值”是否在表 2 中“开始”列的一行中的值范围内”和“停止”。如果该值在该范围内,我想返回“水果”的类型。 between 方法似乎能够完成此操作,但不确定如何将其应用于另一个表中的行。请注意,我需要使用大型数据集执行此任务,并且愿意使用 pandas 库之外的方法。

enter image description here

示例代码

df1 = pd.DataFrame({'Date': {0: '06-01', 1: '06-02', 2: '06-03', 3: '06-04'},
                   'Value': {0: 3, 1: 7, 2: 9, 3: 16}, })

df2 = pd.DataFrame({'Start': {0: 1, 1: 6, 2: 11, 3: 16},
                    'Stop': {0: 5, 1: 10, 2: 15, 3: 20},
                    'Fruit': {0: 'Apple', 1: 'Orange', 2: 'Pear', 3: 'Mango'},})

表1

    Date  Value
0  06-01      3
1  06-02      7
2  06-03      9
3  06-04     16

表2

    Fruit  Start  Stop
0   Apple      1     5
1  Orange      6    10
2    Pear     11    15
3   Mango     16    20

表 1 期望的输出

    Date  Value  Fruit
0  06-01      3   Apple
1  06-02      7  Orange
2  06-03      9  Orange
3  06-04     16   Mango

最佳答案

这里是在路上而不是使用 IntervalIndex ,我们检查 numpy board-cast

s1=df2.Start.values
s2=df2.Stop.values
s=df1.Value.values[:,None]
np.dot((s>=s1)&(s<=s2),df2.Fruit)
array(['Apple', 'Orange', 'Orange', 'Mango'], dtype=object)

关于python - Pandas 在另一个表的范围内查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56782121/

相关文章:

python - 循环数据帧时计算行的出现次数

python - 谷歌历史价格到 Pandas 数据框

python - 我应该如何在不删除行的情况下将值更改为 0

Python Pandas Dataframe 根据包含字符的列删除行

python - 如何比较 Pandas 中的两个字符串变量?

python - Pandas 过滤多个串联子串

python - 为什么我不能使用正则表达式挖出某些字符串的某些 ID?

Python - 清除用户输入?

python - 将存储为 numpy 数组的图像转换为 hsv 的有效方法

python - 如何将 pandas 中的加速度计数据插入固定采样率?