エラーが発生している理由はNG
が空だからです。行の抽出判定部分がおかしいです。
"False"
をFalse
に修正すれば解消します。
最終的に欲しい結果は以下のようなものでしょうか。
Python
1import pandas as pd
2
3df = pd.DataFrame({'Device':list('AP'), 'Master':[0,1], 'Current':[0,0]})
4df['Judge'] = (df['Master'] == df['Current'])
5
6cond = df['Judge'] == False
7print(df.loc[cond,'Device'])
8#1 P
9#Name: Device, dtype: object
10
11df['ret'] = ''
12df.loc[cond,'ret'] = df.loc[cond,'Device']
13print(df)
14# Device Master Current Judge ret
15#0 A 0 0 True
16#1 P 1 0 False P
なお、複数列の値がすべて同一か判定したい場合は以下のようにしてできます。
Python
1import pandas as pd
2
3df = pd.DataFrame({'Dev':list('ABC'), 'v1':[1,1,1], 'v2':[1,1,0],'v3':[1,0,0]})
4
5value_cols = ['v1','v2','v3']
6df['Judge'] = df.loc[:,value_cols].apply(lambda r:len(set(r)) <= 1, axis=1)
7print(df)
8# Dev v1 v2 v3 Judge
9#0 A 1 1 1 True
10#1 B 1 1 0 False
11#2 C 1 0 0 False