我有两个不同大小的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的b值(0.821281),因为它们介于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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句