Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在熊猫中使用lstrip时删除额外字符_Python_Python 3.x_Pandas_Dataframe_Strip - Fatal编程技术网

Python 在熊猫中使用lstrip时删除额外字符

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”

我有一个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”被删除,这是错误的

      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

谢谢,这也行。但这里有一条警告信息,因此使用下面的解决方案