2016-04-06 9 views
0

2つの異なるExcelシートから2つの列を抽出しました。両方の列は名前のリストです。私は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'で必要な列を取り除いたので、本当にインデックスは必要ありません。 –

関連する問題