前提・実現したいこと
掲題の通りです。
下記コードのdf1とdf2をaxis=1で統合し、
重複行についてはデータを加算する方法について知りたいと思っています。
出力結果にはdf3を期待しています。
ちょうどよい関数があるのではないかと思って検索したのですが、
軽くconcat, merge, joinのドキュメントを読んだ限りでは実現できなさそうかと思いました。
(英語力不足かもしれませんが...)
もしご存知の方がいらっしゃいましたら、ご教示いただけますと幸いです。
あるいは、自作したコードを示しますので、改良案をいただけると嬉しいです。(warningを吐きます)
以上よろしくお願いします。
python
1import pandas as pd 2 3df1 = pd.DataFrame({ 4 'A': [1,2,3], 5 'B': [1,2,3], 6 'C': [1,2,3] 7}) 8 9df2 = pd.DataFrame({ 10 'A': [1,2,3], 11 'B': [1,2,3] 12}) 13 14df3 = pd.DataFrame({ 15 'A': [2,4,6], 16 'B': [2,4,6], 17 'C': [1,2,3] 18})
自作のソースコード
python
1import numpy as np 2# concatenate dfs 3dfs = [df1,df2] 4tmp = pd.concat(dfs, axis=1) 5dup_logic = tmp.columns.duplicated() 6 7## ret has unique columns 8ret = tmp.iloc[:,np.logical_not(dup_logic)] 9for i in tmp.columns[dup_logic]: 10 ret.loc[:,i] = tmp.loc[:,i].sum(axis=1).replace(0.0, np.nan) # replace is optional 11ret = ret.loc[:,sorted(ret.columns)] 12ret.head()

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/30 04:07