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

时间:2018-03-14 21:45:00

标签: python pandas dataframe split delimiter

我有一个带有'timezone'列的数据框。部分参赛作品被列为“国家/城市”。我希望他们只是'城市'。 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 个答案:

答案 0 :(得分:2)

将分割数量限制为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]可以充分处理那些无法分割的情况。