在python中自动化逻辑聚合映射功能

时间:2015-02-08 10:21:57

标签: python pandas mapping

我有一个名为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)

但现在我不想硬编码。我打算让它更加自动化,以便用户不必指定映射。有人可以帮我弄这个吗?我想我们必须使用正则表达式才能使其完全自动化?

2 个答案:

答案 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