Я хотел бы объединить два кадра данных по столбцам Name and Depth. Глубина в левом df имеет один столбец глубины («глубина»). Однако правый df имеет два столбца глубины ('top_depth' и 'bottom_depth').В Pandas слияние двух dataframs со сложным мультииндексированием
Я хотел бы взять каждую запись из левого df и, если доступно, назначить запись справа df, если между «top_depth» и «bottom_depth» находится «глубина».
Я соединил несколько простых dataframes:
df1 = pd.DataFrame(np.array([
['b1', 4, 9],
['b1', 5, 61],
['b1', 15, 95],
['b1', 24, 9],
['b2', 4, 5],
['b2', 6, 6],
['b2', 44, 0]]),
columns=['name', 'depth', 'attr1'])
df2 = pd.DataFrame(np.array([
['b1', 1, 6, 66],
['b1', 14, 16, 99],
['b1', 51, 55, 9],
['b3', 0, 5, 32]]),
columns=['name', 'top_depth', 'bottom_depth', 'attr2'])
Тогда сливаются, чтобы получить это:
>>> df3
name depth top_depth bottom_depth attr1 attr2
0 b1 4.0 1.0 6.0 9.0 66.0
1 b1 5.0 1.0 6.0 61.0 66.0
2 b1 15.0 14.0 16.0 95.0 99.0
3 b1 24 NaN NaN 9 NaN
4 b2 4 NaN NaN 5 NaN
5 b2 6 NaN NaN 6 NaN
6 b2 44 NaN NaN 0 NaN
Я уверен, что я мог понять, грубой силы подход к этому, но имеет должно быть лучше, больше панд, способ сделать это.
Что случилось с b3 в строке 3 (из df2)? –
Почему df2 ['top_depth'] - df2 ['bottom_depth'] не всегда положительный или отрицательный? –
Лиам вы поймали мою ошибку. Третья строка в df2 (строка 2) должна быть 51, 55, не 55, 51. Я отредактировал свой вопрос. Спасибо. df2 ['bottom_depth'] - df2 ['top_depth'] всегда должен быть положительным. – Todd