Problém byl v tom, že object
dtype je zavádějící. Myslel jsem, že to znamená, že všechny položky byly řetězce. Ale zjevně při čtení souboru pandas převáděl některé prvky na ints a zbytek nechal jako řetězce.
Řešením bylo ujistit se, že každé pole je řetězec:
>>> df1.col1 = df1.col1.astype(str)
>>> df2.col2 = df2.col2.astype(str)
Potom sloučení funguje podle očekávání.
(Přál bych si, aby existoval způsob, jak zadat dtype
z str
...)