前提・実現したいこと
DataFrame1(df1)の'ID'が持つデータ'Ans'列の値に、DataFrame2(df2)の'ID'が持つデータ'Ans'の値を加算させたいです。このとき、df1の'ID'とdf2の'ID'が一致する行のみこの処理を行いたいです。
-以下、実現したいイメージ-
df1
ID Ans
1 1
1 2
2 1
3 1
3 2
3 3
4 1
5 1
df2
ID Ans
1 1
2 2
3 2
⇒df2の持つIDに対応するdf1のIDのAnsのみ、df2のAns値を加算し、結果を別のDataFrame3(df3)に格納
df3
ID Ans
1 2
1 3
2 3
3 2
3 3
3 4
発生している問題・エラーメッセージ
以下のコードにて対応するdf1のIDのAnsにdf2のAnsを加算することはできたのですが、df3のID 1のAnsが二つとも3になってしまいました。
該当のソースコード
python
1import pandas as pd 2 3df1 = pd.DataFrame({'ID': [1, 1, 2, 3, 3, 3, 4, 5 ], 'Ans': [1, 2, 1, 1, 2, 3, 1, 1]}) 4df2 = pd.DataFrame({'ID': [1, 2, 3], 'Ans': [1, 2, 2]}) 5df3 = pd.DataFrame() 6 7j = 0 8while(j < 1): 9 for ID1, count1 in zip(df1['ID'], df1['Ans']): 10 for ID2, count2 in zip(df2['ID'], df1['Ans']): 11 if ID1 == ID2: 12 if not count1 == count2: 13 3 = pd.Series([ID1,count2+count1]) 14 df3 = df3.append(3, ignore_index=True) 15 j+=1 16 else: 17 pass
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/12 01:45