![](/img/trans.png)
[英]Adding data to columns in a dataframe based on condition on column values of another dataframe
[英]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.