如何使用Python基于另一个Excel表过滤目标Excel的行并解决相关报错
错误原因
- 你搞反了
isin()方法的判断逻辑:现有写法是判断df2的skill_set值是否存在于df1的skills列,返回的布尔序列长度和df2的行数一致,和你要索引的df1行数不匹配,所以触发了索引对齐错误。 - 你的需求是筛选
df1中skills列的值存在于df2的skill_set列的行,应该用df1的列作为判断主体,判断它的元素是否在df2的目标列中。
修正后的完整代码
import pandas as pd file1 = 'emp_list.xlsx' file2 = 'emp_skills.xlsx' df1 = pd.read_excel(file1) df2 = pd.read_excel(file2) # 先提取df2的skill_set去重后作为判断集合,提升判断效率 target_skills = df2['skill_set'].unique() filter_df = df1[df1['skills'].isin(target_skills)] # 输出时加index=False避免把pandas自动生成的行索引写入Excel filter_df.to_excel('output.xlsx', index=False)
补充说明
如果确认df2的skill_set列没有重复值,可以直接写filter_df = df1[df1['skills'].isin(df2['skill_set'])],效果完全一致。
内容的提问来源于stack exchange,提问作者user1014725
相关产品推荐
相关产品推荐

