【发布时间】:2021-11-28 08:44:51
【问题描述】:
我正在从两个输入 Excel 文件中获取数据,并在 pandas 数据框的帮助下对其进行处理。 Excel 具有大量数据和列数。但是我创建了简单的例子来说明这个问题
以下是第一个数据帧 df_s1(需要对零件编号列执行操作)-
以下是第二个数据帧 df_s2(这里提到了一些特殊字符,我必须从 df_s1['Part Number'] 的开头删除这些字符,这些字符非常大,包括 、2、 ((* 2)等......我提到了有限的) -
现在的问题是我必须从 df_s1(第一个数据帧)中的 Part Number 列的开头删除(删除)所有特殊字符。有关这些特殊字符的信息在 df_s2(second dataframe Special Character 列(大量字符包括(,*...)
我尝试了以下代码来实现它。我还在我的代码中准备了示例数据框,以便于解决)
#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
但是,除了 1 个部件号 2*VEDGE-CAB-C13-XXX 没有删除 2* 之外,我从上面的代码中得到了以下所需的输出
我在找-
- 我知道通过 pandas 完成这项任务不是标准方法。那么,您能否像
df.str.findall().str.replace()一样帮助我解决您的pandas python 解决方案。我无法将这种标准方法放在我的解决方案中。只是我们必须替换所有提到的字符,因为它是从第一个数据帧部件号列开始的第二个数据帧 - 我无法弄清楚为什么
2*VEDGE-CAB-C13-XXX2* 在我的解决方案中没有从启动中删除,而其他特殊字符从启动中删除
希望我清楚并且非常积极地获得解决此问题的另一种方法
【问题讨论】:
标签: python regex pandas dataframe str-replace