2016-07-25 19 views
0

私はpandasデータフレームを持っています。私は別のデータフレームを作成したい、列は最初のフレームから選択された列の合計になります。別のデータフレームからの合計のPandasデータフレーム

たとえば、最初のデータフレームでは、'A','B','C'および'D'という名前の列があります。新しい列は'X''Y'であり、'X''A','B'および'C''Y'の合計が'D'のみである必要があります。 "マッピング"は辞書に保存することができます:{'X': ['A', 'B', 'C'], Y: ['D']}が、必ずしもそうである必要はありません。

空のデータフレームを'X''Y'のキーで初期化してから、列を追加するか、より早い方法がありますか?

df2 = pd.DataFrame({'X': df[['A', 'B', 'C']].sum(axis=1), 'Y': df['D']}) 

それとも列でそれを列を構築することができます:

答えて

2

あなたがちょうど直接にすでにデータを持つデータフレームを初期化することができ

df2 = df[['A', 'B', 'C']].sum(axis=1).to_frame(name='X') 
df2['Y'] = df['D'] 

最初の列のために、あなたが必要です希望の列名としてをnameと呼んでください。それ以外の場合、df2はDataFrameではなくSeriesになり、列の追加に問題があります。最初の列の後は、いつものように列を割り当てることができます。

サンプル入力:(いずれの方法の場合)

df = pd.DataFrame({'A':[3,1,4],'B':[1,5,9],'C':[2,6,5],'D':[3,5,8]}) 

    A B C D 
0 3 1 2 3 
1 1 5 6 5 
2 4 9 5 8 

出力例:

X Y 
0 6 3 
1 12 5 
2 18 8 
関連する問題