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

Python 当并非所有单元格都包含分隔符时,请删除该分隔符之前的所有内容,python,pandas,dataframe,split,delimiter,Python,Pandas,Dataframe,Split,Delimiter,我有一个带有“时区”列的数据帧。一些条目被列为“国家/城市”。我希望他们只是“城市”。关于stackoverflow也有类似的问题,我从中得出以下结论 df['timezone'] = df['timezone'].str.split('/').str[1] 但是,这会删除中没有“/”的条目。所以我尝试了各种其他的改编,但都没有成功 接下来,我尝试构造一个lambda函数并使用map,对下面的函数进行了各种修改,这也不起作用 df['timezone'] = df['timezone'].ma

我有一个带有“时区”列的数据帧。一些条目被列为“国家/城市”。我希望他们只是“城市”。关于stackoverflow也有类似的问题,我从中得出以下结论

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]
可以很好地处理那些不需要拆分的情况。

谢谢@COLDSPEED非常感谢。哈哈,我的天哪,当我需要的只是一个负号的时候,所有那些额外的(尝试的)解决问题的时刻!它甚至可以在没有n=1的情况下工作。干杯