実現したいこと
pd.mergeを実行したときに、重複行が複製されないようにしたい。
前提
PythonにてDataFrameを用いてデータ加工しています。
DataFrameAとDataFrameBをmergeして、DataFrameC(目標)を作りたいのです。
しかしmergeすると、重複行が複製されてしまいます(実際)。
作成したいDataFrameC(目標)
id | name | price_old | price_new |
---|---|---|---|
g001 | AA | 100 | 110 |
g002 | BB | 200 | 220 |
g002 | BB | 200 | 220 |
g003 | CC | 300 | 300 |
g003 | CC | 300 | 300 |
以下ソースコードのpd.mergeにて生成するDataFrameC(実際)
id | name | price_old | price_new |
---|---|---|---|
g001 | AA | 100 | 110 |
g002 | BB | 200 | 220 |
g002 | BB | 200 | 220 |
g002 | BB | 200 | 220 |
g002 | BB | 200 | 220 |
g003 | CC | 300 | 300 |
g003 | CC | 300 | 300 |
g003 | CC | 300 | 300 |
g003 | CC | 300 | 300 |
該当のソースコード
Python
1# DataFrameA 2df_A = pd.DataFrame({ 3 'id':["g001","g002","g002","g003","g003"], 4 'name':["AA","BB","BB","CC","CC"], 5 'price_old': [100, 200,200,300,300], 6}).set_index("id") 7 8# DataFrameB 9df_B = pd.DataFrame({ 10 'id':["g001","g002","g002","g003","g003"], 11 'price_new': [110, 220,220,300,300], 12}).set_index("id") 13 14# DataFrameC 15df_C = pd.merge(df_A, df_B, how='right', left_index=True, right_index=True)
試したこと
DataFrameAの行が重複していることが原因と思うのですが、この解消法がわかりません。
以下のデータフレーム形式でも構いません。よろしくお願いします。
id | name | price_old | price_new |
---|---|---|---|
g001 | AA | 100 | 110 |
g002 | BB | 200 | 220 |
g003 | CC | 300 | 300 |
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/04/01 13:20