如何在Pandas DataFrame中保留颜色列值存在于另一个DataFrame中的行?
解决Pandas DataFrame基于另一列筛选时数据类型不匹配的问题
你遇到的问题确实是因为两个DataFrame中Color列的数据类型不一致,导致isin()方法无法正确匹配。下面是具体的解决步骤:
1. 先确认两列的数据类型
首先可以用以下代码明确问题所在,查看两列的数据类型:
print("df1.Color的数据类型:", df1.Color.dtype) print("df2.Color的数据类型:", df2.Color.dtype)
2. 统一两列的数据类型
把df2的Color列转换成和df1一致的字符串类型(str),如果df2中存在额外空格或缺失值,还可以顺便处理:
# 转换为字符串类型并去除可能的首尾空格 df2['Color'] = df2['Color'].astype(str).str.strip()
如果不想修改原始的df2,也可以在筛选时临时转换类型,一步到位:
result_df = df1[df1.Color.isin(df2.Color.astype(str).str.strip())]
3. 执行筛选并验证结果
完成类型统一后,执行你原本的筛选代码就能得到期望的结果:
result_df = df1[df1.Color.isin(df2.Color)]
最终得到的结果如下:
Transport | City | Color
Car | Paris| red
Bike | Paris| red
Car | New York| blue
内容的提问来源于stack exchange,提问作者Nada
相关产品推荐
相关产品推荐

