前提・実現したいこと
データを集計して定型フォーマットのCSVを作ろうとしています。
group(1)
0 | 1 | 2 | grp |
---|---|---|---|
1 | N | 登録太郎 | 1 |
2 | aaa@xxx.jp | 1 | |
3 | bbb@xxx.jp | 1 |
group(2)
0 | 1 | 2 | grp |
---|---|---|---|
4 | N | 登録次郎 | 2 |
5 | ccc@xxx.jp | 2 | |
6 | ddd@xxx.jp | 2 |
group(3)
0 | 1 | 2 | grp |
---|---|---|---|
7 | N | 登録三郎 | 3 |
8 | eee@xxx.jp | 3 | |
9 | fff@xxx.jp | 3 | |
10 | ggg@xxx.jp | 3 |
group(1)+group(2)+group(3)を結合して以下のような表を作りたい
0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | N | 登録太郎 | 登録次郎 | 登録三郎 |
2 | aaa@xxx.jp | ccc@xxx.jp | eee@xxx.jp | |
3 | bbb@xxx.jp | ddd@xxx.jp | fff@xxx.jp | |
4 | NaN | NaN | ggg@xxx.jp |
しかし、結合merge()またはjoinを使って結合してみるとキーが丸ごと増えていってしまう。
これだと、2件の結合なら手動で消せるけれども1000件以上あると考えると手におえない。
0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | N | 登録太郎 | 登録次郎 | 登録三郎 |
2 | aaa@xxx.jp | ccc@xxx.jp | eee@xxx.jp | |
3 | bbb@xxx.jp | ccc@xxx.jp | fff@xxx.jp | |
4 | aaa@xxx.jp | ddd@xxx.jp | ggg@xxx.jp | |
5 | bbb@xxx.jp | ddd@xxx.jp | eee@xxx.jp | |
6 | aaa@xxx.jp | ccc@xxx.jp | fff@xxx.jp | |
7 | bbb@xxx.jp | ccc@xxx.jp | ggg@xxx.jp | |
8 | aaa@xxx.jp | ddd@xxx.jp | eee@xxx.jp | |
9 | bbb@xxx.jp | ddd@xxx.jp | fff@xxx.jp |
発生している問題・エラーメッセージ
pyhonのpandasでデータを集計していますが、EMAIL欄に同じインデックス名称で中身の違うものを結合しようとすると、データが重複して生成されていってしまいます。 pd.merge後のメールアドレスデータが重複生成されないようにしたい。
該当のソースコード
python
1 2grp_groupby.get_group(1) 3 4 label 1 grp 51 N 登録太郎 1 62 EMAIL aaa@xxx.jp 1 73 EMAIL bbb@xxx.jp 1 8 9 10grp_groupby.get_group(2) 11 12 label 1 grp 134 N 登録二郎 2 145 EMAIL ccc@xxx.jp 2 156 EMAIL ddd@xxx.jp 2 16 17 18df_test = pd.merge(grp_groupby.get_group(1),grp_groupby.get_group(2),on='label',how='outer') 19 20 label 1_x grp_x 1_y grp_y 211 FN 登録太郎 1.0 登録二郎様 2 222 EMAIL aaa@xxx.jp 1.0 ccc@xxx.jp 2 233 EMAIL bbb@xxx.jp 1.0 ccc@xxx.jp 2 244 EMAIL aaa@xxx.jp 1.0 ddd@xxx.jp 2 255 EMAIL bbb@xxx.jp 1.0 ddd@xxx.jp 2 26
試したこと
pandasのmerge()やjoin()を使ってみましたが、重複生成されてしまう点は変わらなかったです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
希望の形を提示すると回答しやすくなるかもしれません。
どうもありがとうございます。希望の形を示してみました。
「df_test = pd.merge(grp_groupby.get_group(1),grp_groupby.get_group(2),on=0,how='outer')
」で、”しかし、結合merge()またはjoinを使って結合してみるとキーが丸ごと増えていってしまう。”の状態のデータフレームになりますか?(カラム0は重複なしなので質問の形にはならないかと思います)
やりたいことはデータフレームのマージではなく、データフレームを横方向に結合することでしょうか?
元データのリストgroup(1)(2)(3)は縦に繰り返された一連のデータです。
これを列1にあるキーワードで集計し、CSV形式で編集できるようにしたいものです。
方向は横でも縦でもよいです。
pd.merge(grp_groupby.get_group(1),grp_groupby.get_group(2),on='label',how='outer')が正しいと思いますので修正しました。
回答3件
あなたの回答
tips
プレビュー