检查序列中的最后一个字符是否为大写,如果为true则转换为小写



我有一列字符串,看起来类似于以下内容:

1          IX-1-a
2          IX-1-b
3          IX-1-C
4          IX-1-D

有些以小写字母结尾,而另一些以大写字母结尾。我需要将所有结尾标准化为小写,而不影响字符串开头的字母。下面是我正在处理的一些代码片段,用于在系列中进行更改,但它并不完全起作用。

if i in tw4515['Unnamed: 0'].str[-1].str.isupper() == True:
tw4515['Unnamed: 0'].str[-1].str.lower()

如何有效地利用tw4515['Unnamed: 0'].str[-1].str.isupper()的真值表来影响条件变化?

一个选项是从右侧拆分一次,使第二部分小写,然后组合:

tmp = s.str.rsplit('-', 1)
out = tmp.str[0] + '-' + tmp.str[1].str.lower()

如果最后一部分总是一个字母,@Barmar的解决方案甚至更好:

out = s.str[:-1] + s.str[-1].str.lower()

输出:

1    IX-1-a
2    IX-1-b
3    IX-1-c
4    IX-1-d

最新更新