特定の列が別の基準も満たしている場合に、特定の基準を満たす pandas DataFrame 内のすべてのセルを選択しようとしています。
次の DataFrame があるとします。
A B C D
1/1 0 1 0 1
1/2 2 1 1 1
1/3 3 0 1 0
1/4 1 0 1 2
1/5 1 0 1 1
1/6 2 0 2 1
1/7 3 5 2 3
列が以前の値よりも大きいデータを何らかの方法で選択したいと思いますD
。また、> 1 の場合でもあります。現在使用しようとしている構文は次のとおりです。
matches = df[(df > df.shift(1)) & (df.D > 1)]
ただし、これを行うと、次のエラーが表示されます。
TypeError:ブロック値で[配列([nan、nan、nan、nan]、dtype = object)]を操作できませんでした[オペランドを形状と一緒にブロードキャストできませんでした(2016)(4)]
注: エラーは、実際のコードから直接コピーして貼り付けたものであるため、エラーの説明と形状は、サンプルの DataFrame とは直接関係がありません。
が問題を引き起こしていることはわかっており、df.D > 1
列を直接比較することD
は有効です(df > df.D
たとえば)。D
valueと比較しようとするときの構文のどこが間違っています1
か?どうすればこれを達成できますか?