我有一列,该列的一部分将被另一列的值替换。 例如,我想从此开始:
<table style="width:100%" border="1">
<tr>
<th>Reference</th>
<th>Identification\Customer</th>
<th>Target Customer</th>
</tr>
<tr>
<td>CustomerA\BFG\CustomerA-CCP\CustomerA-CSA</td>
<td>CustomerA</td>
<td>CustomerB</td>
</tr>
</table>
对此
<table style="width:100%" border="1">
<tr>
<th>Reference
</th>
<th>Identification\Customer</th>
<th>Target Customer</th>
</tr>
<tr>
<td>Customer<a style="color:red;">B</a>\BFG\CustomerA-CCP\CustomerA-CSA</td>
<td>CustomerA</td>
<td>CustomerB</td>
</tr>
</table>
我只希望将CustomerA的初始值更改为CustomerB。其余值应保持不变。
我认为这应该可行,但我在列中全都输入了
data = [['CustomerA\\BFG\\CustomerA-CCP\\CustomerA-Agreement', 'CustomerA', 'CustomerB'],['CustomerC\\BFG\\CustomerC-CCP\\CustomerC-Agreement', 'CustomerC', 'CustomerD']]
customerCollateral = pd.DataFrame(data, columns = ['Reference', 'Identification\\Customer','Identification\\Parent'])
customerCollateral['Reference2']=customerCollateral.apply(lambda x:x['Reference'].replace(x['Identification\\Customer'],x['Identification\\Parent'],n=1),axis=1)
print(customerCollateral)
但是,当我执行上述操作时,出现此错误。 TypeError :(“ replace()不带关键字参数”,“发生在索引0”)
如果我不使用n = 1,则将CustomerA的所有值替换为CustomerB。
答案 0 :(得分:0)
x['Reference']
是有问题的对象,因为x
是一个Series,并且已经按名称查询过。用replace(...)
调用的对象是str
。
但是,str.replace
没有关键字n
。请参阅此处的文档,限制由第三个参数而不是关键字参数定义:https://docs.python.org/3/library/stdtypes.html#str.replace
答案 1 :(得分:0)
customerCollateral['Reference'] = customerCollateral['Identification\Parent'].str.cat(customerCollateral['Reference'].str.extract(r"(\\.*)"))
只需以正确的顺序连接所需的字符串即可。我提取了我们想要的参考列部分,并添加了id / parent列。