解決したいこと
ValueErrorを解決したい。
論理演算式を用いて以下のようなコード書きました。
python
1import pandas as pd 2 3Li ={'A':[1,2,3,4],'B':[1,2,3,4],'C':[3,2,4,1],'D':[1,2,3,2],'E':[1,4,3,1],'F':[3,1,2,4]} 4df = pd.DataFrame(Li) 5def TP3(Y1,Y2,Y3,R1,R2,R3): 6 if (((Y1==R1)|(Y1==R2)|(Y1==R3))& 7 ((Y2==R1)|(Y2==R2)|(Y2==R3))& 8 ((Y3==R1)|(Y3==R2)|(Y3==R3))): 9 return 1 10 else: 11 return 0 12TP['R']=TP3(df['A'],df['B'],df['C'],df['D'],df['E'],df['F'])
以下のようなエラーが出力されます。
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
トライしたこと
まずはじめに、関数が動作するのかを確認し問題なく動作することを確認し、正しく動作していることを確認しました。
python
1TP3(1,2,3,1,2,3) 2#-->1 3 4TP3(1,2,3,1,4,3) 5#-->0
次に関数を用いずに、動作をするかを確認しました。こちらも正しく動作していることを確認しました。
python
1Y1=df['A'] 2Y2=df['B'] 3Y3=df['C'] 4R1=df['D'] 5R2=df['E'] 6R3=df['F'] 7df['R']=(((Y1==R1)|(Y1==R2)|(Y1==R3))& 8 ((Y2==R1)|(Y2==R2)|(Y2==R3))& 9 ((Y3==R1)|(Y3==R2)|(Y3==R3))) 10 11#0 True 12#1 True 13#2 False 14#3 True 15#Name: R, dtype: bool
教えていただきたいこと。
関数を使った際のValueErrorを回避する方法について教えてください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/23 04:56