我有一个数据列,其列如下所示
输入:
CD
Component Description_CAP YO
Component Description_CAPE IO
Component Description_CLOSE SO
Component Description_CAT TO
Component Description_CAPP TTO
Component Description_CLOSE IUO
我用过lstrip,其中删除了Component_Description后的“ C”
df['CD'] = df['CD'].map(lambda x: x.lstrip('Component Description_'))
预期结果:
CD
CAP YO
CLOSE SO
CAT TO
CAPP TTO
CLOSE IUO
我得到的实际结果
CD
AP YO
LOSE SO
AT TO
APP TTO
LOSE IU
答案 0 :(得分:1)
如果使用lstrip
,则解决方案中存在问题,它会从左侧删除字符串中定义的所有字母。
解决方案是将Series.str.replace
与^
一起用于正则表达式中的起始ot字符串:
df['CD'] = df['CD'].str.replace(r'^Component Description_', '')
print (df)
CD
0 CAP YO
1 CAPE IO
2 CLOSE SO
3 CAT TO
4 CAPP TTO
5 CLOSE IUO
答案 1 :(得分:1)
使用str.extract
例如:
df = pd.DataFrame({"CD": ['Component Description_CAP YO', 'Component Description_CAPE IO', 'Component Description_CLOSE SO', 'Component Description_CAT TO', 'Component Description_CAPP TTO', 'Component Description_CLOSE IUO']})
df["CD"] = df["CD"].str.extract(r"_(.*)$")
print(df)
输出:
CD
0 CAP YO
1 CAPE IO
2 CLOSE SO
3 CAT TO
4 CAPP TTO
5 CLOSE IUO