pandas drop_duplicates不删除同一dtype对象的重复记录

rslzwgfq  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(150)

我有以下 Dataframe :
DF1:

col1  |   col2   |  col3
1          2          3
4          5          6
40        50         60

当我打印这些列的数据类型时,它们都是对象。2现在,我想添加新的行(作为 Dataframe 输入),所以我连接这些 Dataframe
DF2:

col1  |   col2   |  col3
40        50         60

当我打印第二个 Dataframe 的数据类型时,所有列的Int64,所以我将第二个 Dataframe 转换为对象类型(因为第二个 Dataframe 也可能有'str' dtype),所以我做了以下操作:

DF2 = DF2.astype(DF1.dtypes.to_dict())
DF1= pd.concat([DF1, DF2])

然后,我将这两个 Dataframe 连接起来,之后,当我尝试删除重复项时,不会删除重复记录

DF1 = DF1.drop_duplicates(
            subset=DF1.columns.to_list(), keep='last')

我当前得到的结果:
DF1:

col1  |   col2   |  col3
1          2          3
4          5          6
40        50         60
40        50         60

有人能帮我做错了什么吗,

如果我将两个 Dataframe 都转换为str dtype,它会起作用,但这不是我寻找的通用解决方案

ryevplcw

ryevplcw1#

您需要将两个数据框中的所有列转换为通用数据类型,然后再将它们连接起来。例如:

DF1 = DF1.astype(str)
DF2 = DF2.astype(str)
DF1 = pd.concat([DF1, DF2])

相关问题