我有一个带有'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
非常感谢任何帮助或建议,谢谢。
答案 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]
可以充分处理那些无法分割的情况。