当并非所有单元格都包含分隔符时,删除分隔符之前的所有内容

Remove everything before a delimiter when not all cells contain that delimiter

我有一个包含 'timezone' 列的数据框。一些条目列为 'country/city'。我希望它们只是 'city'。 Whosebug上有类似的问题,我从中得出了以下结论。

df['timezone'] = df['timezone'].str.split('/').str[1]

但是,这删除了没有“/”的条目。所以我尝试了各种其他改编,但没有任何效果。

接下来我尝试构造一个lambda函数并使用map,做了下面的各种改编,这也没有用。

df['timezone'] = df['timezone'].map(lambda x: x.split('/').str[1]) 

#AttributeError: 'list' object has no attribute 'str'

最后,我决定在下面写一个循环。 Python花了点时间搞定,本来满怀希望的,结果好像什么都没有。

x = df['timezone']

for entry in x.items() :
    if x.str.contains('/') is True:
        x.str.split('/').str[1] 
        update(x) 
    else:
        pass

非常感谢任何帮助或建议,谢谢。

将拆分数限制为 1(当分隔符可能出现多次时需要),然后使用 str[-1] 而不是 str[1]:

df   
       timezone
0  country/city
1           foo
2           bar

df['timezone'] = df['timezone'].str.split('/', n=1).str[-1]
df

  timezone
0     city
1      foo
2      bar

str[-1] 足以处理那些没有什么可拆分的情况。