一尘不染

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

py

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

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< 5.5< 10 因此,f[1] 的值 = c[0] = 1

最终结果应该是这样的

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


阅读 106

收藏
2023-02-01

共1个答案

一尘不染

假设 a 和 b 中的间隔不重叠df1,您可以使用pd.cutwith a pd.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
2023-02-01