2016-11-03 6 views
0

私は非常に大きなデータフレームを作成しようとしていますが、多くの小さなデータフレーム(データフレーム名に名前が変更されています)から1列です。 CONCAT()を使用して、データフレームを表す辞書の値をループし、インデックス値をループして大きなデータフレームを作成しています。 CONCAT()join_axesは、すべてのデータフレームの共通インデックスです。これは正常に動作しますが、重複する列名があります。私は私の最後のデータフレーム作成の一部としてspecifc窓でインデックスをループすることができなければなりません
- ので、例えばオプション作成時に結合された列を持つPANDAS CONCAT()

ありえないこの除去工程を、これはduplciate列を持つ以下の最終データフレームになり:

enter image description here

は私が?:

enter image description here

のような出力を生成するために列を私はexcatlyとして)CONCATを(使用していますが、マージすることができます方法はあります
+0

あなたはおそらく 'df = pd.concat([df1、df2]、axis = 1)' – JMat

+0

を実行することができます。私は何百というデータフレームを持っており、インデックスにjoin_axisを持たなければなりません – cwse

答えて

1

は、私はあなたが必要だと思う

print (df.groupby(level=0, axis=1).sum()) 

サンプル:

df1 = pd.DataFrame({'A':[5,8,7, np.nan], 
        'B':[1,np.nan,np.nan,9], 
        'C':[7,3,np.nan,0]}) 

df2 = pd.DataFrame({'A':[np.nan,np.nan,np.nan,2], 
        'B':[1,2,np.nan,np.nan], 
        'C':[np.nan,6,np.nan,3]}) 
print (df1) 
    A B C 
0 5.0 1.0 7.0 
1 8.0 NaN 3.0 
2 7.0 NaN NaN 
3 NaN 9.0 0.0 

print (df2) 
    A B C 
0 NaN 1.0 NaN 
1 NaN 2.0 6.0 
2 NaN NaN NaN 
3 2.0 NaN 3.0 

df = pd.concat([df1, df2],axis=1) 
print (df) 
    A B C A B C 
0 5.0 1.0 7.0 NaN 1.0 NaN 
1 8.0 NaN 3.0 NaN 2.0 6.0 
2 7.0 NaN NaN NaN NaN NaN 
3 NaN 9.0 0.0 2.0 NaN 3.0 

print (df.groupby(level=0, axis=1).sum()) 
    A B C 
0 5.0 2.0 7.0 
1 8.0 2.0 9.0 
2 7.0 NaN NaN 
3 2.0 9.0 3.0 
1

お望みのものはdf1.combine_first(df2)です。 pandas documentationを参照してください。

df = pd.concat([df1, df2]) 

するか、列に重複している場合、一部の値が重複している場合は、次に合算されている場合groupbyを使用します:

combine_first

関連する問題