python - 根据条件将新数据从另一个 Dataframe 添加到 Dataframe

所以我的问题是如何根据另一个数据框的条件将新列中的数据添加到数据框中。这很难说,所以我在这里举个例子

df1

columns  a   b  c
         0   10  1
         10  15  3
         15  20  5


df2
columns  d      e  
         3.3   10   
         5.5   20
         14.5  11
         17.2  5
   

我想在这里做的是将另一列f添加到df2,它的值来自df1这样 如果 d[i] 在 a[j] 和 b[j] 之间,则将值 c[j] 复制到 df2 中的新列 f[i]。 例如:d[1] = 5.5 所以 0

最终结果应该是这样的

df2
columns  d      e    f
         3.3   10    1 
         5.5   20    1
         14.5  11    3
         17.2  5     5
   

非常感谢任何帮助!

问候,

史蒂夫

最佳答案

假设 df1 a 和 b 中的间隔不重叠,您可以使用 pd.cutpd.IntervalIndex :

import pandas as pd

# Your dfs here
df1 = pd.read_clipboard()
df2 = pd.read_clipboard()

idx = pd.IntervalIndex.from_arrays(df1["a"], df1["b"])
mapping = df1["c"].set_axis(idx)

df2["f"] = pd.cut(df2["d"], idx).map(mapping)

df2:

      d   e  f
0   3.3  10  1
1   5.5  20  1
2  14.5  11  3
3  17.2   5  5

https://stackoverflow.com/questions/75263740/

相关文章:

c++ - 是不是 vector.at(vector.size()-1) 比 vector.back

sql-server-2005 - 强制 SQL Server 列为特定值

python - 查找给定范围内的数字,使给定列表中任何元素的数字的 gcd 始终为 1

wpf - ListBox 中的 TextBox、Button 和 ListBox

perl - Perl 包变量什么时候超出范围?

.net - .NET : System. InvalidOperationException :

sql-server - 从现有数据库生成 SQL DDL 和内容的工具

fortran - Fortran 能否在逻辑运算中强制遵守参数顺序?

c++ - std::variant 使用整数数组中的元素作为 std::variant 中的目标类

vbscript - 当我的 InstallShield 安装程序尝试运行我的 VBS 自定义操作时