私はパンダのデータフレームを持っています。別の 2 つの列を含む条件に基づいて、列から単一の値を取得したいと考えています。column1 と column2 で最大の距離である column3 の値を探しています。
動作する簡単な例を作成します。
d = pd.DataFrame({'c1':[.1,3,11.3],'c2':[3,6,.6],'c3':[8,.8,10.9]})
print'data d=\n%s\n' % d
x = float(d.c3[abs(d.c1-d.c2)==max(abs(d.c1-d.c2))].values)
print 'the value of x= \n%s\n' % x
この例の出力は、期待どおりです。
c1 c2 c3
0 0.1 3.0 8.0
1 3.0 6.0 0.8
2 11.3 0.6 10.9
the value of x=
10.9
クラス内の大きなデータフレームに関する元の問題にまったく同じロジックを適用しようとしています。コードは次のとおりです。
yInit = float(self.DenFrame.Depth[abs(self.DenFrame.Hper-self.DenFrame.Vper)==max(abs(self.DenFrame.Hper-self.DenFrame.Vper))].values)
しかし、このコードはエラーを生成します:
...
File "C:\Python27\lib\site-packages\pandas-0.9.0-py2.7-win32.egg\pandas\core\series.py", line 73, in wrapper
return Series(na_op(self.values, other.values),
File "C:\Python27\lib\site-packages\pandas-0.9.0-py2.7-win32.egg\pandas\core\series.py", line 59, in na_op
result[mask] = op(x[mask], y[mask])
TypeError: unsupported operand type(s) for -: 'str' and 'str'
ここで、列のタイプに問題がある可能性があることがわかりましたが、Depth はタイプHpernumpy.float64
はタイプfloat
Vper はタイプでfloat
あるため、問題にどのように適用できるかを理解しています。
同じコードがある場合には機能するが別の場合には機能しないことを理解しているため、この時点から何をすべきかわかりません。問題を特定することはできません。