【问题标题】:Automating a logical aggregation mapping function in python在 python 中自动化逻辑聚合映射函数
【发布时间】:2015-04-08 04:39:39
【问题描述】:

我有一列名为brand_name:

Hum Iriga
Hum
Erel Methox
Erel neuro
Erel

现在我想做逻辑聚合,使得 Hum Iriga 与 Hum 相同,Erel Methox 和 Erel 神经与 Erel 相同。一种方法是定义一个映射函数,如:

Mapping={

'EREL Methox':'EREL',
'HUM Iriga' :'HUM',
'EREL Neuro' : 'EREL',

}

f=lambda x: Mapping.get(x,x) ##x是列(brand_name)

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

【问题讨论】:

    标签: python pandas mapping


    【解决方案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]
    

    【讨论】:

      【解决方案2】:

      如果您的意思是只从字符串中获取第一个单词,您可以使用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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多