修正方法: 列が重なっていますが、サフィックスが指定されていません
pandas の使用時に発生する可能性のあるエラーは次のとおりです。
ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')
このエラーは、少なくとも 1 つの共通の列名を共有する 2 つのデータ フレームを結合しようとしたときに、新しいデータ フレームの列を区別するためのサフィックスが左側または右側のデータ フレームに提供されていない場合に発生します。
このエラーを修正するには 2 つの方法があります。
解決策 1: サフィックス名を指定します。
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')
解決策 2: 代わりにマージ関数を使用します。
df1. merge (df2, how = ' left ')
次の例は、このエラーを実際に修正する方法を示しています。
エラーを再現する方法
次の 2 つのデータ フレームを結合しようとしているとします。
import pandas as pd #create first data frame df1 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'], ' points ': [5, 7, 7, 9, 12, 9], ' assists ': [11, 8, 10, 6, 6, 5]}) #create second data frame df2 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'], ' rebounds ': [4, 4, 6, 9, 13, 16], ' steals ': [2, 2, 1, 4, 3, 2]}) #attempt to perform left join on data frames df1. join (df2, how = ' left ') ValueError : columns overlap but no suffix specified: Index(['player'], dtype='object')
2 つのデータ フレームはどちらも「プレーヤー」列を共有していますが、新しいデータ フレームの列を区別するためのサフィックスが左または右のデータ フレームに提供されていないため、エラーが発生します。
エラーを修正する方法
このエラーを修正する 1 つの方法は、左または右のデータ フレームにサフィックス名を指定することです。
#perform left join on data frames with suffix provided df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ') playerleft points assists playerright rebounds steals 0 A 5 11 A 4 2 1 B 7 8 B 4 2 2 C 7 10 C 6 1 3 D 9 6 D 9 4 4 E 12 6 E 13 3 5 F 9 5 F 16 2
このエラーを修正するもう 1 つの方法は、単にmerge()関数を使用することです。これにより、2 つのデータ フレームを結合するときにこの問題は発生しません。
#merge two data frames df1. merge (df2, how = ' left ') player points assists rebounds steals 0 A 5 11 4 2 1 B 7 8 4 2 2 C 7 10 6 1 3 D 9 6 9 4 4 E 12 6 13 3 5 F 9 5 16 2
merge()関数は、最初のデータ フレームに既に属しているすべての名前を 2 番目のデータ フレームから単純に削除することに注意してください。
追加リソース
インデックス上の 2 つの Pandas DataFrame をマージする方法
複数の列にまたがる Pandas DataFrame をマージする方法
Numpy 配列を Pandas DataFrame に追加する方法