修正方法: 列が重なっていますが、サフィックスが指定されていません


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 に追加する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です