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

问题描述 投票:1回答:1

我有一个带有'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

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

python pandas dataframe split delimiter
1个回答
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]充分处理那些无法分割的情况。

© www.soinside.com 2019 - 2024. All rights reserved.