2 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
TA贡献1752条经验 获得超4个赞
IIUC,让我们尝试一下Series.str.replace:
df['final'] = df['OutputValues'].str.replace(r'\d+-\d+-', '')
OutputValues CntOutputValues final
0 12-99-Annual (AE) 217 Annual (AE)
1 21-581-Ineligible Services(IPS) 210 Ineligible Services(IPS)
2 125-99-Annual (AE),126-22-Jermaine (JE) 196 Annual (AE),Jermaine (JE)
3 22-99-Annual (AE) 181 Annual (AE)
4 21-50-Prime (PE) 169 Prime (PE)
![?](http://img1.sycdn.imooc.com/53339fdf00019de902200220-100-100.jpg)
TA贡献1853条经验 获得超9个赞
您的问题有两个部分,一个是处理字符串,另一个是将其应用于数据框。为了处理字符串,如果模式保持相同的含义,您确定每个字符串都是数字-数字-字符,并且多个值用“,”分隔,那么您可以使用类似以下函数:
def deconcat(output_value):
output_value = output_value.split(',')
result = ''
for part in output_value:
_, _, item = part.split('-')
result += item + ", "
return result.rstrip(', ')
该函数接受一个字符串,如果有多个值,则用“,”分隔它,然后对于每个值,用“-”分隔并将第三部分添加到结果字符串中。
现在您只需将此函数应用于整个数据框并创建新列:
df['final'] = df.OutputValues.apply(deconcat)
这会将函数应用于数据框中 OutputValues 的每一行,并将结果字符串添加到名为“final”的新列中。
添加回答
举报