Pandas での修正方法: 系列の真理値があいまいです


Python で発生する可能性のあるエラーは次のとおりです。

 ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

このエラーは通常、文字 &|を使用する代わりに単語andorを使用して pandas DataFrame をフィルタリングしようとしたときに発生します。オペレーターたち。

このチュートリアルでは、このエラーを実際に解決する方法を説明します。

エラーを再現する方法

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

 import pandas as pd

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

#view DataFrame
print (df)

  team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5
6 B 20 9 9
7 B 28 4 12

ここで、チームが「A」に等しくポイントが 20 未満である行をフィルターしようとしているとします。

 #attempt to filter DataFrame
df[(df[' team '] == ' A ') and (df[' points '] < 20 )]

ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

または、チームが「A」に等しい行、またはポイントが 20 未満の行をフィルターしようとするとします。

 #attempt to filter DataFrame
df[(df[' team '] == ' A ') or (df[' points '] < 20 )]

ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

どちらのシナリオでも、系列の真理値があいまいであることを示すエラーが発生します。

エラーを修正する方法

フィルタリング時にこのエラーを回避するには、 &|を必ず使用する必要があります。要素。オペレーターたち。

たとえば、次のコードを使用して、チームが「A」に等しくポイントが 20 未満である行をフィルターできます。

 #filter DataFrame
df[(df[' team '] == ' A ') & (df[' points '] < 20 )]

team points assists rebounds
0 A 18 5 11
2 A 19 7 10
3 A 14 9 6

または、次のコードを使用して、チームが「A」に等しい行、またはポイントが 20 未満の行をフィルタリングすることもできます。

 #filter DataFrame
df[(df[' team '] == ' A ') | (df[' points '] < 20 )]

        team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5

どちらのシナリオでも、 &| を使用したため、エラーは発生しません。要素。オペレーターたち。

: 複数の条件で pandas DataFrame をフィルタリングする場合は、個々の条件を括弧で囲むことが重要です。そうしないと、エラーが発生します。

追加リソース

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

修正方法: 「pandas」モジュールには「dataframe」属性がありません
Pandas での修正方法:SettingWithCopyWarning
Pandas での修正方法: TypeError: プロットする数値データがありません

コメントを追加する

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