我有熊貓DataFrame。我想根據涉及兩列的條件從列中獲取單個值。我要尋找的值從欄3爲這是在列1的最大距離和2熊貓數據框操作中不支持的操作數
我建立簡單的例子,其工作原理:
從這個例子的輸出是如我所料:
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'
我here發現,有可能是與類型的列的問題,但深度型numpy.float64
HPER是類型float
Vper是類型float
,所以我明白它如何適用於我的問題。
從這一點我不知道該怎麼辦,因爲我瞭解相同的代碼在一個案件中起作用,但在另一個案件中不起作用,我無法發現問題。
要確認,'DenFrame.Hper.dtype'和'DenFrame .Ver.dtype'是float64? –
當我使用:'print self.DenFrame.Hper.dtype'輸出是'object'。對於'print type(self.DenFrame.Hper)',輸出是''裏面的所有位置都是'float'(我有點丟失這個類型) –
tomasz74
那麼' DenFrame.Vper.dtype',那麼'DenFrame.Hper.map(type).unique()'的輸出是什麼(對於'Vper'也是一樣的)。 –