回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个pandas数据框,我试图找到满足两个条件的行,然后计算一个值</p>
<p>基本前提是:</p>
<ul>
<li>使用数据帧<strong>df</strong></li>
<li>
<ol>
<li>将调整内重量燃油中的值替换为预清洁燃油调整
当:</li>
</ol>
</li>
<li>1.1预清洁燃料调节=12;及</li>
<li>1.2调整内部重量燃料<;=1200</li>
<li>
<ol start=“2”>
<li>然后将输入值乘以100(当前以2位小数浮点)
位置,需要为int)</li>
</ol>
</li>
</ul>
<p>我需要所有其他行保持不变并保持在数据帧中</p>
<p>目前,我正在尝试使用以下内容:</p>
<pre><code>df['ADJ_INT_WEIGHT_FUEL'] = (df['PreClear_Fuel_Adj']*100).where(df['PreClear_Fuel_Adj'] == 12 & df['ADJ_INT_WEIGHT_FUEL'] <= 1200)
</code></pre>
<p><strong>示例</strong><br/>
原创的</p>
<pre><code>+---------------------+-------------------+
| ADJ_INT_WEIGHT_FUEL | PreClear_Fuel_Adj |
+---------------------+-------------------+
| 10 | 0 |
| 30 | 12 | <-- Will be identified by .where()
| 20 | 0 |
| 5 | 0 |
| 15 | 12 | <-- Will be identified by .where()
| 25 | 0 |
| 3500 | 12 |
+---------------------+-------------------+
</code></pre>
<p>算计</p>
<pre><code>+---------------------+-------------------+
| ADJ_INT_WEIGHT_FUEL | PreClear_Fuel_Adj |
+---------------------+-------------------+
| 10 | 0 |
| 1200 | 12 | <-- Was identified by .where()
| 20 | 0 |
| 5 | 0 |
| 1200 | 12 | <-- Was identified by .where()
| 25 | 0 |
| 3500 | 12 |
+---------------------+-------------------+
</code></pre>
<p><strong>问题</strong>
我目前收到一个错误。Pandas正在ArcGIS Pro中使用,因此下面的转储中也会出现一些ArcGIS Pro错误消息。但是,一般来说,<em>我们可以将此示例视为通用数据帧</em></p>
<p>要么我对数据类型有问题,要么我对使用&;操作人员也就是说,我不确定我的选择和计算语法是否正确。因此,如果有错误,我可以使用一些反馈</p>
<p>谢谢</p>
<pre><code>Traceback (most recent call last):
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pandas\core\ops\array_ops.py", line 274, in na_logical_op
result = op(x, y)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pandas\core\ops\roperator.py", line 52, in rand_
return operator.and_(right, left)
**TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''**
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pandas\core\ops\array_ops.py", line 288, in na_logical_op
result = libops.scalar_binop(x, y, op)
File "pandas\_libs\ops.pyx", line 169, in pandas._libs.ops.scalar_binop
**ValueError: Buffer dtype mismatch, expected 'Python object' but got 'double'**
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 479, in execute
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pandas\core\ops\common.py", line 64, in new_method
return method(self, other)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pandas\core\ops\__init__.py", line 552, in wrapper
res_values = logical_op(lvalues, rvalues, op)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pandas\core\ops\array_ops.py", line 366, in logical_op
res_values = na_logical_op(lvalues, rvalues, op)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\pandas\core\ops\array_ops.py", line 298, in na_logical_op
f"Cannot perform '{op.__name__}' with a dtyped [{x.dtype}] array "
TypeError: Cannot perform 'rand_' with a dtyped [float64] array and scalar of type [bool]
Failed to execute (Tool).
</code></pre>