修正方法: valueerror: 一致しない列を含む行を定義できません


pandas の使用時に発生する可能性のあるエラーは次のとおりです。

 ValueError : cannot set a row with mismatched columns

このエラーは、pandas DataFrame に新しい行を追加しようとしたが、新しい行の値の数が既存の DataFrame の列の数と一致しない場合に発生します。

次の例は、このエラーを実際に修正する方法を示しています。

エラーを再現する方法

次のパンダ データフレームを作成するとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28, 22],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4, 8],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 9]})

#view DataFrame
df

	team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7:28 4 12
8 I 22 8 9

ここで、DataFrame の最後に新しい行を追加しようとするとします。

 #define new row to append
new_team = ['I', 30]

#append row to DataFrame
df. loc [ len (df)] = new_team

#view updated DataFrame
df

ValueError : cannot set a row with mismatched columns

追加しようとしている新しい行には値が 2 つしかないのに、既存の DataFrame には 4 つの列があるため、 ValueError が返されます。

エラーを修正する方法

このエラーを修正する最も簡単な方法は、 append()関数を使用して DataFrame の末尾に改行を追加することです。これにより、欠落している値が自動的に NaN で埋められます。

次の構文は、この関数を実際に使用する方法を示しています。

 #define new row to append
new = ['J', 30]

#append row to end of DataFrame
df = df. append ( pd.Series (new,index= df.columns [: len (new)]), ignore_index= True )

#view updated DataFrame
df

	team points assists rebounds
0 to 18 5.0 11.0
1 B 22 7.0 8.0
2 C 19 7.0 10.0
3 D 14 9.0 6.0
4 E 14 12.0 6.0
5 F 11 9.0 5.0
6 G 20 9.0 9.0
7:28 a.m. 4.0 12.0
8 I 22 8.0 9.0
9 D 30 NaN NaN

ValueErrorを受け取っておらず、DataFrame の末尾に改行が追加されていることに注意してください。

また、新しい行の 2 つの欠損値が NaN 値で埋められただけであることにも注意してください。

追加リソース

次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。

修正方法: 列が重なっていますが、サフィックスが指定されていません
修正方法: オブジェクト「numpy.ndarray」には「append」属性がありません
修正方法: すべてのスカラー値を使用する場合は、インデックスを渡す必要があります。

コメントを追加する

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