2016-04-06 36 views
0

我從兩個不同的Excel表格中提取了兩列。這兩列都是名稱列表。我想比較column1和column2,並將不在column2中的任何名稱添加到column1中,而不重複現有名稱。我應該使用循環來實現這個功能還是有內置函數可以使用?使用熊貓在excel表格中組合行,同時避免重複

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]] 

回答

0
  1. 如果你有興趣只在獲得唯一名稱的列,它是那樣簡單

    new_col = pd.concat(df1[col1], df2[col2]).drop_duplicates() 
    
  2. 它更復雜,以保持第一列或數據幀完好無損時,它本身包含重複項。我能想到的是這樣的:

    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]]

+0

col1是什麼?獲取錯誤'NameError:name'col1'未定義' –

+0

這是您的列的名稱或索引。 – ptrj

+0

實際上,我用'df1.iloc'剝離了我需要的列,所以我不需要真正的索引。 –