回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有这样一个数据帧<code>df_in</code>:</p>
<pre><code>import pandas as pd
import numpy as np
dic_in = {'A':['aa','bb','cc','dd','ee','ff','gg','uu','xx','yy','zz'],
'B':['200','200','AA200','AA040',np.nan,'500',np.nan,'0700','900','UKK','200'],
'C':['UNN','400',np.nan,'AA080','AA800','B',np.nan,'400',np.nan,'500','UKK']}
</code></pre>
<p>我的目标是研究<code>B</code>列和<code>C</code>列,以便:</p>
<ul>
<li>如果其中一项包含以下字符<code>'AA'</code>,则必须删除字符串中的数字部分,只留下数字部分。(<code>AA123 ---> 123</code>)。如果零出现在第一个非空元素之前,则必须将其删除(<code>AA001234 ---> 1234</code>)。你知道吗</li>
<li>如果数量不是一个数字,那么它必须设置为<code>0.0</code>(<code>NaN ---> 0.0</code>、<code>UNN ----> 0.0</code>、<code>UKK ---> 0.0</code>等等)。你知道吗</li>
<li>如果项目前面有前导零,则必须将其删除(<code>070--->700</code>,<code>00007000--->7000</code>)</li>
<li>如果一个项目已经被修改并且不是零,那么它必须乘以<code>100</code>。你知道吗</li>
</ul>
<p>最终结果如下:</p>
<pre><code> # BEFORE # # AFTER #
A B C A B C
0 aa 200 UNN 0 aa 200 0.0
1 bb 200 400 1 bb 200 400
2 cc AA200 NaN 2 cc 20000 0.0
3 dd AA040 AA080 3 dd 4000 8000
4 ee NaN AA800 4 ee 0.0 80000
5 ff 500 B 5 ff 500 0.0
6 gg NaN NaN 6 gg 0.0 0.0
7 uu 0700 400 7 uu 700 400
8 xx 900 NaN 8 xx 900 0.0
9 yy UKK 500 9 yy 0.0 500
10 zz 200 UKK 10 zz 200 0.0
</code></pre>
<p>你知道一个聪明有效的方法来达到这个目标吗?你知道吗</p>
<p><strong>注意</strong>:所有数字实际上都是字符串,它们应该保持原样。你知道吗</p>