【发布时间】: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