【发布时间】:2015-12-28 15:54:30
【问题描述】:
我想合并列 Id 和 top_depth 和 bottom_depth 上的两个数据框。
我想从左侧 df 中获取每条记录,如果“深度”在“top_depth”和“bottom_depth”之间,则从右侧 df 分配一条记录。
以下是数据框的示例:
df1 = pd.DataFrame(np.array([
['a', 27, 29, 10],
['a', 29, 30, 2.5],
['a', 30, 32.5, 56],
['a', 32.5, 36, 18],
['a', 36, 39, 5],
['b', 0, 3, 0.5],
['b', 3, 6, 1.5],
['b', 6, 9, 2.5]]),
columns=['name', 'top_depth', 'bottom_depth', 'attr1'])
df2 = pd.DataFrame(np.array([
['a', 0, 25, 'alpha'],
['a', 25, 28, 'beta'],
['a', 28, 39, 'gamma'],
['b', 0, 6, 'alpha'],
['b', 6, 9, 'beta'],
['b', 9, 18, 'phi'],
['b', 18, 25, 'teta']]),
columns=['name', 'top_depth', 'bottom_depth', 'attr2'])
然后合并得到这个:
>>> df3
name top_depth bottom_depth attr1 attr2
0 a 0 25 NaN alpha
1 a 25 27 NaN beta
2 a 27 28 10 beta
2 a 28 29 10 gamma
3 a 29 30 2.5 gamma
4 a 30 32.5 56 gamma
5 a 32.5 36 18 gamma
6 a 36 39 5 gamma
7 b 0 3 0.5 alpha
8 b 3 6 1.5 alpha
9 b 6 9 2.5 beta
10 b 9 18 NaN phi
11 b 18 25 NaN teta
在 pandas 中是否有一种简单的方法可以做到这一点?
【问题讨论】: