Your dt_merged does contain data, it does not contain a view.
use
dt_merged << New Data View;
instead of
dt_merged << Show Window;
The table exists but doesn't yet have an associated window.
Also note that in JMP 18 Python Get( df ) does use dataframe -> CSV CSV -> data_table internally just like JMP 14-17 did. Only the JMP data table has live access to the data across JMP / Python boundaries.
In JMP 19 the situation is much better. JMP supports the Portable Dataframe Protocol and it's a 1 line of code to go from a JMP dt => a pandas DataFrame and another 1 line to go DataFrame to DataTable. This works for any dataframe like package that supports the DataFrame Protocol and the conversion occurs in memory.
Your other choice is creating the merged data table in Python using the jmp.DataTable APIs and walking the dataframe columns creating JMP columns one by one in the new data table. Looks like you have time data as part of the tables. This takes care to get correct. In JMP 14-18 you have to marshal between JMP's data time representation and Python's data time representation. Epoch date for JMP is Jan 1, 1904 ( same as Excel on the Mac) vs Python's Epoch Date is Jan 1, 1970.
JMP 19 properly marshals datetime values across the JSL / Python boundaries.
There are examples in the 'Python' section of the scripting index, for the jmp import package.
I would highly recommend updating to JMP 19. JMP 18 was a foundational change to Python Integration in JMP . While JMP 18's support was not as complete as we would have liked, it provided so much capability we did not want to hold off until JMP 19.