不同大小DataFrame对比报Can only compare identically-labeled Series错误
报错原因
触发
Can only compare identically-labeled Series objects报错的核心原因是:Pandas中用==直接对比两个Series对象时,要求两边的序列长度、索引标签完全匹配。你当前两个DataFrame的Names列分别有1000条、48条数据,长度和索引都不一致,无法直接用==对比。
解决方案
根据你的实际需求选择对应方案即可:
- 如果你是要判断df2的每个
Names值是否存在于df1的Names列中(绝大多数这类需求都属于这个场景),直接用isin()方法实现,不需要两个列长度一致:# 生成yes/no字符串列 df2['present_in_df1'] = np.where(df2['Names'].isin(df1['Names']), "yes", "no") # 也可以直接生成布尔值列,代码更简洁 # df2['present_in_df1'] = df2['Names'].isin(df1['Names']) - 如果你确实需要按行位置一一对比两个
Names列的内容,需要先对齐两个序列的长度和索引:# 截取df1的前48行,重置索引后和df2对比 df1_names_cut = df1['Names'].head(len(df2)).reset_index(drop=True) df2_names = df2['Names'].reset_index(drop=True) df2['present_in_df1'] = np.where(df1_names_cut == df2_names, "yes", "no")
内容的提问来源于stack exchange,提问作者Deli
相关产品推荐
相关产品推荐

