在熊猫中使用lstrip时删除多余的字符

时间:2019-08-06 12:33:02

标签: python python-3.x pandas dataframe strip

我有一个数据列,其列如下所示

输入:

  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

2 个答案:

答案 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