2017-03-10 6 views
0

私はパンダで複数のデータフレームをマージし、結果のデータフレームにカラムのラベルをそのまま残そうとしています。サンドイッチ付きパンダのネストされたマージ

import pandas as pd 
df1 = pd.DataFrame(data = [[1,1],[3,1],[5,1]], columns = ['key','val']) 
df2 = pd.DataFrame(data = [[1,2],[3,2],[7,2]], columns = ['key','val']) 
df3 = pd.DataFrame(data = [[1,3],[2,3],[4,3]], columns = ['key','val']) 
df = pd.merge(pd.merge(df1,df2,on='key', suffixes=['_1','_2']),df3,on='key',suffixes=[None,'_3']) 

私はこれを取得しています:ここに私のテストケースだ

df = 
    key val_1 val_2 val 
0  1  1  2  3 

私はこれを見てみたいと思います:

df = 
    key val_1 val_2 val_3 
0  1  1  2  3 

私が指定した接尾辞の最後のペア[None,'_3']であり、論理は、['_1','_2']のペアが前のマージのために一意の列名を作成したことである。

答えて

0

マージされたデータフレームに同じ名前の2つの列がある場合にのみ、接尾辞が必要です。 df3をマージすると、データフレームのカラム名はval_1とval_2になり、重複はありません。 valの名前をval_3に変更すると、このように処理できます

df = df1.merge(df2, on = 'key', suffixes=['_1','_2']).merge(df3, on = 'key').rename(columns = {'val': 'val_3'}) 
関連する問題