执行Pandas过滤代码触发UserWarning,求消除警告的方法
解决Pandas布尔索引重匹配警告的方法
你这问题核心是搞反了isin的判断方向,原代码里df2['pin'].isin(df1['vpin'])生成的布尔序列是跟着df2的索引走的,但你拿它去筛选df1,两个表行数不一样,自然触发了索引重匹配的警告,而且逻辑其实也没对准你的需求。
你要的是筛选df1中vpin存在于df2的pin中的所有行,正确的写法应该是让df1的vpin去匹配df2的pin集合:
new_df = df1[df1['vpin'].isin(df2['pin'])]
用你给的示例数据测试,运行后会保留df1里两行vpin=1的记录,完全符合需求,而且不会再弹出警告。
内容的提问来源于stack exchange,提问作者Nathi
相关产品推荐
相关产品推荐

