当并非所有单元格都包含分隔符时,删除分隔符之前的所有内容
Remove everything before a delimiter when not all cells contain that delimiter
我有一个包含 'timezone' 列的数据框。一些条目列为 'country/city'。我希望它们只是 'city'。 Whosebug上有类似的问题,我从中得出了以下结论。
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]
足以处理那些没有什么可拆分的情况。
我有一个包含 'timezone' 列的数据框。一些条目列为 'country/city'。我希望它们只是 'city'。 Whosebug上有类似的问题,我从中得出了以下结论。
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]
足以处理那些没有什么可拆分的情况。