1. ホーム
  2. python

[解決済み] 1つのキーカラムで2つのDataFrameを結合する / ERROR: 'columns overlap but no suffix specified'.

2022-02-28 02:45:36

質問

販売テーブルと製品テーブルの2つのテーブルがあり、これら2つのテーブルは「PART NUMBER」カラムを共有しています。 販売テーブルの「PART NUMBER」カラムは一意ではありませんが、製品テーブルでは一意です。(下の画像は、販売テーブルと製品テーブルのスナップショットです。)

販売テーブルの各「PART NUMBER」に相当する「Description」を追加しようとして、以下のようにしました。 pandasのウェブサイトから 私のコード

sales.join(part_table, on='PART NUMBER')

しかし、このようなエラーが発生しました。

ValueError: columns overlap but no suffix specified: Index([u'PART NUMBER'], dtype='object')

このエラーの意味と解決策をどなたか説明してください。

ありがとうございます。

解決方法は?

を行いたいのだと思います。 マージ よりも、むしろ 結合 :

sales.merge(part_table)

以下は、データフレームの例です。

In [11]: dfa = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])

In [12]: dfb = pd.DataFrame([[1, 'a'], [3, 'b'], [3, 'c']], columns=['A', 'C'])

In [13]: dfa.join(dfb, on=['A'])
ValueError: columns overlap but no suffix specified: Index([u'A'], dtype='object')

In [14]: dfa.merge(dfb)
Out[14]:
   A  B  C
0  1  2  a
1  3  4  b
2  3  4  c


これが意図的なものなのかどうか、ドキュメントからは不明です(私は on がカラムとして使用されます)しかし、サフィックスを追加した場合の例外メッセージに従うと、何が起こっているのかがわかります。

In [21]: dfb.join(dfa, on=['A'], lsuffix='_a', rsuffix='_b')
Out[21]:
   A_a  C  A_b   B
0    1  a    3   4
1    3  b  NaN NaN
2    3  c  NaN NaN

In [22]: dfb.join(dfa, lsuffix='_a', rsuffix='_b')
Out[22]:
   A_a  C  A_b   B
0    1  a    1   2
1    3  b    3   4
2    3  c  NaN NaN

on kwargを無視してjoinだけしています。