我有一个名为brand_name的列:
Hum Iriga
Hum
Erel Methox
Erel neuro
Erel
现在我想进行逻辑聚合,使得Hum Iriga与Hum相同,Erel Methox和Erel neuro与Erel相同。一种方法是定义映射函数,如:
Mapping={
'EREL Methox':'EREL',
'HUM Iriga' :'HUM',
'EREL Neuro' : 'EREL',
}
f = lambda x:Mapping.get(x,x)## x是列(brand_name)
但现在我不想硬编码。我打算让它更加自动化,以便用户不必指定映射。有人可以帮我弄这个吗?我想我们必须使用正则表达式才能使其完全自动化?
答案 0 :(得分:1)
falsetru
的答案很好,但python中也有矢量化的字符串函数可能会更快(并且通常很好避免每次你想要做类似的事情时都要lambda
df = pd.DataFrame({'brand_names': ['Hum Iriga',
'Hum',
'Erel Methox',
'Erel neuro',
'Erel'],
'other_column': range(5)})
df.brand_names.str.split().str[0]
答案 1 :(得分:0)
如果您只想从字符串中获取第一个单词,则可以使用str.split
并获取第一个分割部分:
>>> 'Hum Iriga'.split()
['Hum', 'Iriga']
>>> 'Hum Iriga'.split()[0]
'Hum'
f = lambda x: x.split()[0]
f = lambda x: x.split(None, 1)[0] # 1: max split