修正方法: valueerror: インデックスに重複したエントリが含まれているため、再形成できません
pandas の使用時に発生する可能性のあるエラーは次のとおりです。
ValueError : Index contains duplicate entries, cannot reshape
このエラーは通常、 pivot()関数を使用して pandas DataFrame を再形成しようとしたときに発生しますが、結果の DataFrame には同じインデックス値を共有する複数の値が存在します。
次の例は、このエラーを実際に修正する方法を示しています。
エラーを再現する方法
次のパンダ データフレームがあるとします。
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 4, 9, 9, 12]}) #view DataFrame df team position points 0 A G 5 1 A G 7 2 A F 7 3 A F 9 4 B G 4 5 B G 9 6 B F 9 7 B F 12
ここで、チームを行、位置を列として使用して、DataFrame を回転しようとするとします。
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
データフレーム内の複数の行が、チームとポジションの同じ値を共有しているため、エラーが発生します。
したがって、DataFrame を再形成しようとすると、pandas は、結果として得られる DataFrame の各セルにどのポイント値を表示すべきかを知りません。
エラーを修正する方法
このエラーを修正するには、特定のaggfunc引数を指定したpivot_table()関数を使用して、特定の方法でデータ値を集計します。
たとえば、 pivot_table()を使用して、行としてチーム、列として位置、およびデータフレームのセル内のポイント値の合計を使用する新しいデータフレームを作成できます。
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
今回はエラーが発生しないことに注意してください。
DataFrame の値は、各チームとポジションの組み合わせのポイントの合計を示します。
aggfuncには、average などの別の値を使用することもできることに注意してください。
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' mean ')
position F G
team
At 8.0 6.0
B 10.5 6.5
pivot_table()関数でaggfunc引数を使用すると、エラーを回避できます。
注: pivot_table()関数の完全なドキュメントは、ここで見つけることができます。
追加リソース
次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。
パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした