Python 在熊猫中使用lstrip时删除额外字符
我有一个dataframe,其列如下所示 输入:Python 在熊猫中使用lstrip时删除额外字符,python,python-3.x,pandas,dataframe,strip,Python,Python 3.x,Pandas,Dataframe,Strip,我有一个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 我使用了lstrip,其中在组件描述之后的“C”
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,其中在组件描述之后的“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
若使用
lstrip
从左边删除字符串中定义的所有字母,问题就出在您的解决方案中
对于正则表达式中的起始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
使用
str.extract
Ex:
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
输出:
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
谢谢,这也行。但这里有一条警告信息,因此使用下面的解决方案