Masalahnya adalah object
dtype menyesatkan. Saya pikir itu berarti bahwa semua item adalah string. Namun ternyata, saat membaca file pandas mengonversi beberapa elemen menjadi int, dan meninggalkan sisanya sebagai string.
Solusinya adalah memastikan bahwa setiap bidang adalah string:
>>> df1.col1 = df1.col1.astype(str)
>>> df2.col2 = df2.col2.astype(str)
Kemudian penggabungan berfungsi seperti yang diharapkan.
(Saya berharap ada cara untuk menentukan dtype
dari str
...)