我有一个 Dataframe ,我想遍历行,并删除末尾的数字,这取决于出现在末尾的数字。如果数字在[0到5]之间,我想删除1个数字,如果数字等于20,我想删除每个单词末尾的2个数字。
我设计了通用代码,但是我不知道如何定义一行中的一个单词是以0到5结尾还是以20结尾,你能帮我解决这个问题吗?
def vvv (df):
for index, row in df.iterrows:
> if row['FT'] ends to a number from 1 to 5
row['FT'] = row['FT'].str.replace(r'\d$', '', regex=True)
> if row['FT'] ends to 20
row['FT'] = row['FT'].str.replace(r'\d\d$', '', regex=True)
return df
更新:我设计的代码如下,但我得到了另一个TypeError错误:“method”对象不可迭代
def vvv(df):
for index, row in df.iterrows:
row['FT'] = row['FT'].str.replace(r'\([1-9]|10)$', '', regex=True)
row['FT'] = row['FT'].str.replace(r'_$', '', regex=True)
return df
1条答案
按热度按时间n53p2ov01#
你可以用
Regex详情:
(?<!\d)
-左手数字边界(不允许有紧邻左边的数字)(?:[0-5]|20)
-0
、1
、2
、3
、4
、5
或20
$
-字符串结束。参见regex demo。
如果你还打算去掉数字前的空格,你可以添加
.str.strip()
或.str.rstrip()
。或者,使用\s*(?<!\d)(?:[0-5]|20)$
正则表达式(参见regex demo),但我会使用strip
。