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

标签 python pandas dataframe split delimiter

我有一个带有“时区”列的数据框。一些条目被列为“国家/城市”。我希望它们只是“城市”。 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/

相关文章:

python - 计算利率 Python Dataframe

python - 在 Python 的 for 循环中使用 pd.get_dummies 创建虚拟变量

r - 在R中将因子转换为时间

python - Pandas 数据框问题。不知道如何清理和管理一种 block 状矩阵

python - 如何使用 native python 库列出当前在 linux 中的所有进程类型(运行、僵尸等)

python - Flask HTTP Basicauth - 它是如何工作的?

python - 如何在 pandas Dataframe 中查找 numpy 数组列的 boolean 值?

Python:确保对象内属性类型的有效方法?

能源系统: How to build intermediates that are 2D arrays的Python GEKKO MINLP优化

python - 在 Python 中将数字从 sqlite 转换为日期