Das Problem war, dass das object
dtype ist irreführend. Ich dachte, es bedeutet, dass alle Gegenstände Saiten sind. Aber anscheinend konvertierte Pandas beim Lesen der Datei einige Elemente in Ints und beließ die Reste als Strings.
Die Lösung bestand darin sicherzustellen, dass jedes Feld ein String ist:
>>> df1.col1 = df1.col1.astype(str)
>>> df2.col2 = df2.col2.astype(str)
Dann funktioniert die Zusammenführung wie erwartet.
(Ich wünschte, es gäbe eine Möglichkeit, einen dtype
anzugeben von str
...)