Het probleem was dat het object
dtype is misleidend. Ik dacht dat het betekende dat alle items strings waren. Maar blijkbaar converteerde pandas tijdens het lezen van het bestand enkele elementen naar ints en liet de resten als strings achter.
De oplossing was om ervoor te zorgen dat elk veld een string is:
>>> df1.col1 = df1.col1.astype(str)
>>> df2.col2 = df2.col2.astype(str)
Dan werkt de samenvoeging zoals verwacht.
(Ik wou dat er een manier was om een dtype
te specificeren van str
...)