回答:
あなたはサブDataFrameをマージすることができます(それらの列だけで):
df2[list('xab')] # df2 but only with columns x, a, and b
df1.merge(df2[list('xab')])
list('xab')
文字列 'xab'の各要素(文字)を受け取り、それをリスト要素に変換するので、をlist('xab')
返します['x', 'a', 'b']
。これは、各列の名前が1文字の場合に機能します。あなたの場合、df1.merge(df2 ['Unique_External_Users']、* other_arguments)を実行する必要があると思います。...おそらくあなたはすでにそれをすでに解決しており、私のようにこれを初心者のために残しているだけです
2つのブラケットを使用したいので、VLOOKUPのようなアクションを実行している場合:
df = pd.merge(df,df2[['Key_Column','Target_Column']],on='Key_Column', how='left')
これにより、元のdfのすべてが提供され、結合したいdf2の対応する1つの列が追加されます。
列をターゲットデータフレームから削除したいが、結合に列が必要な場合は、次の操作を実行できます。
df1 = df1.merge(df2[['a', 'b', 'key1']], how = 'left',
left_on = 'key2', right_on = 'key1').drop('key1')
この.drop('key1')
部分は、最初に結合する必要があるにもかかわらず、「key1」が結果のデータフレームに保持されないようにします。
KeyError: "['key1'] not found in axis"
を使用.loc
して、すべての行で特定の列を選択し、それをプルすることができます。以下に例を示します。
pandas.merge(dataframe1, dataframe2.iloc[:, [0:5]], how='left', on='key')
この例では、dataframe1とdataframe2をマージしています。'key'で外部左結合を選択しました。ただし、dataframe2 .iloc
では、数値形式で必要な行と列を指定できるように指定しました。を使用すると:
、すべての行が[0:5]
選択されますが、最初の5列が選択されます。を使用.loc
して名前で指定することもできますが、長い列名を処理する.iloc
場合は、より適切な場合があります。
.loc
コピーを作成することに注意してください。マージしてから、すぐに同じ式の列スライスを取得する方がよい場合があります。
これは、2つのテーブルから選択した列をマージするためのものです。
場合table_1
含まt1_a,t1_b,t1_c..,id,..t1_z
列を、そしてtable_2
含まt2_a, t2_b, t2_c..., id,..t2_z
列を、とだけt1_a、ID、t2_aは、最終的なテーブルで必要とされ、その後
mergedCSV = table_1[['t1_a','id']].merge(table_2[['t2_a','id']], on = 'id',how = 'left')
# save resulting output file
mergedCSV.to_csv('output.csv',index = False)