2016-07-05 3 views
2

df2の別の値に属するdf1の値を合計するにはどうすればよいですか?df1の値とdf2の別の値とを合計するにはどうすればいいですか

私は本当に大きなDFを持っていますが、私はこのようなDFを持って言うことができます:

df1: 

    A  B  C 
0 John Pen  Apple 
1 John Printer Pie 
2 John Charger Burger 
3 Erick Battery Pizza 
4 Mandy Keyboard Bread 
5 Mandy Phone  Coffee 
6 David Computer Coke 

、別のDF:

df2: 

    A  B 
0 Pen  2 
1 Printer 5 
2 Charger 11 
3 USB  5 
4 Keyboard 8 
5 Phone  21 
6 Cup  3 

そして第三にDF:

df3: 

    A  B 
0 Erick Yes 
1 John Yes 
2 David No 
3 Mandy Yes 
4 Jared No 
5 Lisa No 

df3の新しい列で一致する値を合計したい

私の希望するdf:

A  B Sum 
0 Erick Yes 
1 John Yes 18 
2 David No 
3 Mandy Yes 29 
4 Jared No 
5 Lisa No 

どうすればいいですか?

答えて

2

あなたはmergeを使用することができます。

df = pd.merge(df1, df2, left_on='B', right_on='A', suffixes=('','1')) 
df = df.groupby('A', as_index=False)['B1'].sum() 
df = pd.merge(df3, df, on='A', how='left').rename(columns={'B1':'Sum'}) 
#if need remove NaN 
df.Sum.fillna('', inplace=True) 
print (df) 
     A B Sum 
0 Erick Yes  
1 John Yes 18 
2 David No  
3 Mandy Yes 29 
4 Jared No  
5 Lisa No 
+0

私はエラーKeyError例外取得しています:「カラムが見つかりません:B1」私は申し訳ありませんjezraelだ –

+0

を、私はサフィックスを書いていないことに気づいた...私の悪いです。 これで解決します。私はまだPythonとpandasには新しいですが、もっと毎日勉強しています。ありがとう。 –

関連する問題