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

Check if last character in series is upper case and convert to lowercase if 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()的真相table来影响条件变化?

一种选择是从右侧拆分一次,将第二部分变为小写,然后合并:

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

如果最后一部分总是一个字母, 就更好了:

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