基于另一列中的子字符串条件创建新列

bjp0bcyl  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(328)

我有一个简化的数据框架,其中有一个部门名称列。我想在存储“region”值的同一 Dataframe 中创建一个新列。该标准将从“-”开始在部门名称(a)中搜索条形图内容。e、 g.“欧洲-团队a”将作为新值存储为“欧洲”。在“区域”(b)中,如果没有“-”,则保留整个字符串(c) 如果部门名称为空,则将新值设置为“其他”。
目前,我正在做一个非常粗糙和硬代码的搜索和替换,这是不正确的方式做。寻求关于如何使用优雅方法的建议(可能是条件吗?),如果可能,请避免使用正则表达式。
部门名称ABC欧洲-a欧洲团队-btrd欧洲团队-ctdc欧洲团队-a亚洲团队-a emea团队-dhq团队
部门名称地区亚行欧洲-亚行欧洲-亚行欧洲-亚行欧洲-亚行欧洲-亚行欧洲-亚行欧洲-亚行d emeahqhqothers

v09wglhw

v09wglhw1#

矢量化方法将是最快的:

d = {
    'Department_Name' : ['ABC Europe - Team A', 'ABC Europe - Team B',
                        'TRD Europe - Team C', 'TDC Europe - Team A', 
                        'XXX Asia - Team A' ,'XXX EMEA - Team D', 'HQ',
                         '', np.nan]
}

df = pd.DataFrame(d)

# create series with pre '-' value

dep = df['Department_Name'].str.split('-').str[0].str.strip()

# fill blanks/nulls with 'Others'

df['Region'] = dep.replace('', 'Others').fillna('Others')
print(df)

相关问题