我有一个带有“时区”列的数据框。一些条目被列为“国家/城市”。我希望它们只是“城市”。 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]
足以处理没有任何可分割的情况。
关于python - 当并非所有单元格都包含该分隔符时,删除分隔符之前的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49288117/