熊猫-如果下一个字符为空,则为小写值

时间:2018-10-11 11:12:10

标签: python pandas

Panda和python的新手,因此仍然可以学习绳索。但是,我正在研究如何格式化导入的excel信息。

我的地址栏中有几个地址,其格式为“ St Street'S”。因此,它的末尾带有这个笨拙的大写字母。最初,我认为这可以通过仅使用格式将小写的'格式解决。但是,我对自己的信息进行了深入研究,并意识到我可以这样做,因为某些地址在此之后确实需要大写。

因此,我想知道,我需要编写什么代码,以便之后的下一个字符不是空值? (St Street'S)?

希望这个问题能够解决,现在将尝试发布一些代码,但是作为新手我怀疑它是否在附近。预先谢谢你!

3 个答案:

答案 0 :(得分:0)

不确定我是否100%理解,但是我认为您仍然可以使用正则表达式来做到这一点。例如:

df['Address'].str.replace("\'S", "'s", regex=True)

更新:

如果需要将其保存到df ['Address']中,则需要添加inplace = True,如下所示:

df.Address.replace(r"\'S", "'s", regex=True, inplace=True)

这将导致以下结果:

Address
0   Some Street'S

df.Address.replace(r"\'S", "'s", regex=True)
0    Some Street's

答案 1 :(得分:0)

您可以进行简单的正则表达式替换,以获取所需格式的数据。

查找模式“(\ w +?\'??)S”,然后按如下所示替换它:

re.sub(r'(\w+?\'?)S', r'\1s', input)

模式如下:

\ w +? -从1到无穷大的任意数量的单词字符,选择最少的匹配模式

\'? -尝试匹配单引号(如果存在),或者可能被忽略

S-匹配字符S区分大小写。

那么您所替换的是最后一个带s的S

答案 2 :(得分:0)

在python中,字符串是字符列表。了解tat之后,您可以找到撇号'的索引,检查其后是否跟大写字母S,并检查后是否有空值。像这样:

street = "St Street'S"
index = street.index('\'')
if street[index + 1] == 'S' and street[index + 2] == empty_value:
    street = street[:-1] + street[-1].lower()

我唯一不了解的问题是“ empty_value”是什么意思?