Python 使用pandas合并excel工作表中的行,同时避免重复

Python 使用pandas合并excel工作表中的行,同时避免重复,python,pandas,Python,Pandas,我从两个不同的excel表格中提取了两列。这两列都是名称列表。我想比较column1和column2,并向column1添加任何不在column2中的名称,而不复制现有名称。我应该使用一个循环来完成这个任务,还是有一个内置的函数可以使用 df_1=pd.read_excel("excel sheet") df_2=pd.read_excel("sheet 2") df1.iloc[:,[3]] df1.dropna().drop_duplicates() df_company_list.il

我从两个不同的excel表格中提取了两列。这两列都是名称列表。我想比较column1和column2,并向column1添加任何不在column2中的名称,而不复制现有名称。我应该使用一个循环来完成这个任务,还是有一个内置的函数可以使用

df_1=pd.read_excel("excel sheet")
df_2=pd.read_excel("sheet 2")

df1.iloc[:,[3]]
df1.dropna().drop_duplicates()

df_company_list.iloc[:,[1]]
  • 如果您只对获取一列唯一名称感兴趣,那么只需

    new_col = pd.concat(df1[col1], df2[col2]).drop_duplicates()
    
  • 当第一列或数据帧本身包含重复项时,保持其完整性更为复杂。我能想到这样的事情:

    unique_names = df1[col1].unique()                          # np.array
    idx = df2[col2].apply(lambda x : x not in unique_names)    # boolean array
    df_final = df1.append(df2[idx])                            # data frame
    # or 
    col_final = df1[col1].append(df2.loc[idx,col2])            # single column
    
    但是
    apply
    本质上是一个循环


  • 顺便说一句,你的代码

    df1.iloc[:,[3]]
    df1.dropna().drop_duplicates()
    

    不修改
    df1
    。您可能想要
    df1=df1.iloc[:,[3]

    什么是
    col1
    ?获取错误
    NameError:name'col1'未定义
    它是您列的名称或索引。实际上,我使用
    df1剥离了我需要的列。iloc
    因此我实际上不需要索引。另外,顺便说一句,解决方案2是我需要的def。我在第一个df中有重复的。嗯,不太清楚你的意思。。。这不解决你的问题吗?