回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我从两个输入Excel文件中获取数据,并在pandas dataframe的帮助下对其进行处理。Excel数据量大,列数多。然而,我创建了一些简单的例子来说明这个问题</p>
<p>以下是第一个数据帧df_s1(需要对零件号列执行操作)-
<a href="https://i.stack.imgur.com/2I0b5.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2I0b5.png" alt="first input dataframe"/></a></p>
<p>下面是第二个数据帧df_s2(这里提到了一些特殊字符,我只需从df_s1[‘零件号’]的开头删除这些字符,这些字符非常大,包括<em>、2</em>、(*2)等,我提到了有限)-
<a href="https://i.stack.imgur.com/owPdS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/owPdS.png" alt="Second datframe"/></a></p>
<p>在df_s2的帮助下处理df_s1之后,我需要以下输出-
<a href="https://i.stack.imgur.com/gB7lC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gB7lC.png" alt="Output dataframe"/></a></p>
<p>现在的问题是,我必须删除(删除)df_s1(第一个数据帧)中零件号<strong>列开头的所有特殊字符。关于这些特殊字符的信息在df_s2(第二个数据帧<strong>特殊字符<strong>列(大量字符包括(,*…)</p>
<p>我已经尝试了以下代码来实现它。我还在代码中准备了示例数据帧,这样它将易于解决)</p>
<pre><code>#first dataframe and remove special charaters from starting of part number column
import pandas as pd
df_s1 = pd.DataFrame({'Part Number' : ['(2)CAB-ETHS-RJ45',' 2*VEDGE-CAB-C13-XXX','(4X)CAB-ETHXOVER','1*VEDGE-ABCD','2*73ETHER-387','4xCBTA-98CD','5xNBOC','(1)289RG7','2 CDXG59','(7x)29FG2ZT-AB','((*2)FGDT-X78','((4))RGD-RX78','EDXC-Y82','D92ZT-3A','FTZT-9A7'],
'ID' : ['1','2','3','4','4','4','4','4','4','4','4','5','4','4','6']
})
#Following special charaters needs to remove from starting of part number column of first dataframe
df_s2 = pd.DataFrame({'Special Charater':['(2)','2*','(4X)','1*','4x','5x','(1)','2 ','(7x)','((*2)','((4))']})
for i in df_s2['Special Charater']:
j=0
for k in df_s1['Part Number']:
if str(k).startswith(str(i)):
df_s1['Part Number'][j] = str(k[len(i):])
else:
j+=1
df_s1
</code></pre>
<p>然而,我从上面的代码中得到以下所需的输出,除了1个零件号<code>2*VEDGE-CAB-C13-XXX</code>,其中2*没有被删除</p>
<p><a href="https://i.stack.imgur.com/BZZPD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BZZPD.png" alt="output of my code"/></a></p>
<p>我正在寻找-</p>
<ol>
<li>我知道这不是通过pandas来完成这项任务的标准方法。所以你能帮助我使用你的pandas python解决方案吗。我无法在我的解决方案中使用这种类型的标准方法。我们必须替换所有提到的字符,因为它位于从第一个数据帧零件号列开始的第二个数据帧中</li>
<li>我无法理解为什么在我的解决方案中<code>2*VEDGE-CAB-C13-XXX</code>2*没有从起始位置删除,而其他特殊字符从起始位置删除</li>
</ol>
<p>希望我清楚并且非常积极地找到解决这个问题的另一种方法</p>