繁体   English   中英

根据条件从另一个数据帧的值向数据帧添加新列

[英]Adding a new column to a dataframe from the values of another dataframe based on a condition

我有两个不同大小的不同 DataFrame。

a = np.arange(0,100,10)
b = np.random.random_sample((10,))
df1 = pd.DataFrame({'a': a, 'b': b})
df1

    a   b
0   0   0.340319
1   10  0.821281
2   20  0.592853
3   30  0.589032
4   40  0.533543
5   50  0.628839
6   60  0.431976
7   70  0.306126
8   80  0.080576
9   90  0.533240

c = np.arange(4,14,2)
df2 = pd.DataFrame({'c': c})
df2
    c
0   4
1   6
2   8
3   10
4   12

通过将 df2 中“c”列中的值与 df1 中“a”列中的值进行比较,我想向 df2 添加一个新列,该列将由 df1 中“b”列中的值组成。

比如c列的前三个值是4、6、8,都在df1中a列的前两行定义的范围内(0到10)。 这就是为什么在创建的新列中,我想将 a = 0 (0.340139) 行的 b 值分配给所有这些。

类似地,对于 c 列中的 10 和 12,它们应该得到行 a=10 (0.821281) 的 b 值,因为它们在 10 和 20 之间。

所以最后,我应该得到一个像这样的 DataFrame。

df2

    c   d
0   4   0.340319
1   6   0.340319
2   8   0.340319
3   10  0.340319
4   12  0.821281

因此,如果你们对此有任何提示,将不胜感激。

我们可以试试merge_asof

out = pd.merge_asof(df2, df1, left_on='c',right_on='a', allow_exact_matches=False)
    c   a         b
0   4   0  0.340319
1   6   0  0.340319
2   8   0  0.340319
3  10   0  0.340319
4  12  10  0.821281

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM