【问题标题】:replacing trailing space in Pandas column替换 Pandas 列中的尾随空格
【发布时间】:2021-02-28 23:36:52
【问题描述】:

如果我有一个末尾有空格的字符串,我可以使用 rstrip() 删除尾随空格。

word='- Keane '
"".join(word.rstrip())

它返回'- Keane',这是我想要的。

但是,当使用 apply 方法通过 pandas 列时,它会执行相同的操作。这是我所拥有的(WL2019['Location'] 列的第一行两行):

位置

'-Keane '
'- PBC-CALTEX '

我想要:

'- Keane'
'- PBC-CALTEX'

我使用的代码:

WL2019['NewLoc']=WL2019['Location'].apply(lambda x: "".join(str(x).rstrip()))

但它不会做任何事情。它基本上输出与列位置相同。有谁知道为什么以及如何解决这个问题? 谢谢

编辑:好的,我没有清楚地解释我一直在做什么。这就是问题所在:

我有一个字符串列,它必须提取两个 dahesh 之间的部分条目。像这样:

'v102- Keane - ARC'
'v103- PBC-CALTEX -BARS'

我使用下面的代码来提取中间部分。一旦你这样做了,输出在每个条目中都是列表类型。我们不能将 strip() 用于列表。我必须通过下面的 mumbo jumbo 来修复它。我找到了解决方案,但还没有效率。稍后我可能会发布更好的解决方案。

def location(a):
    
    pat=r'[\s]+[\w\W]+[\s]+'
    pattern=re.compile(pat, re.IGNORECASE)
    
    return re.findall(pattern,a)
    
    
WL2019['NewLoc']=WL2019['Account'].apply(location)    

WL2019['NewLoc']=WL2019['NewLoc'].apply(lambda x: str(x).strip('[]'))
WL2019['NewLoc']=WL2019['NewLoc'].apply(lambda x: str(x).strip("''"))
WL2019['NewLoc']=WL2019['NewLoc'].apply(lambda x: str(x).strip('""'))
WL2019['NewLoc'] = WL2019['NewLoc'].replace('- ','', regex=True).replace(' -', '', regex=True)

【问题讨论】:

  • 您的代码正在运行。你可以试试这个也不需要 .join df['Manufacturer']=df['Manufacturer'].apply(lambda x: x.rstrip())

标签: pandas string lambda replace apply


【解决方案1】:

使用pandas.Series.str.rstrip-

WL2019['NewLoc']=WL2019['Location'].str.rstrip()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    相关资源
    最近更新 更多