【问题标题】:in pandas how to extract specific words from a sentence in a column在熊猫中如何从列中的句子中提取特定单词
【发布时间】:2018-10-29 18:21:39
【问题描述】:

我有df1,我想从'desc'中的句子中提取'flavor',得到df2。有一个风味列表,我根据列表决定选择哪个。如何在 python 中得到结果?

df1:
desc                                flavor
Coke 600mL and Chips                
Coke Zero 600mL and Chips           
390ml Coke + Small Fries            
600ml Coke + Regular Fries with     
Vanilla Coke 600mL and Chips        
Garlic Bread and pepsi 1.25ltr

df2:
 desc                               flavor
 Coke 600mL and Chips               Coke 
 Coke Zero 600mL and Chips          Coke Zero
 390ml Coke + SmallFries            Coke 
 600ml coke + Regular Fries with    Coke 
 Vanilla Coke 600mL and Chips       Vanilla Coke 
 Garlic Bread and pepsi 1.25ltr     Pepsi

> Flavor list: 
Coke 
Coke Zero 
Vanilla Coke 
Pepsi

【问题讨论】:

  • 你怎么知道字符串的味道是什么?大蒜不是味道,百事可乐是味道?听起来很奇怪。
  • 如果没有 python,你将如何获得结果?您能否更详细地说明您如何决定在给定的句子中提取/映射什么?
  • @user1889297 是的,我更新了问题并说清楚了。有一个风味列表,我根据列表映射风味。
  • @zipa 我更新了问题并说清楚了。有一个风味列表,我根据列表映射风味。

标签: python pandas


【解决方案1】:

如果想通过列表仅提取一个值,请使用str.extract

import re

L = ['Coke Zero', 'Vanilla Coke','Pepsi','Coke']
pat = '|'.join(r"\b{}\b".format(x) for x in L)

df['flavor'] = df['desc'].str.extract('('+ pat + ')', expand=False, flags=re.I)
print (df)
                              desc        flavor
0             Coke 600mL and Chips          Coke
1        Coke Zero 600mL and Chips     Coke Zero
2         390ml Coke + Small Fries          Coke
3  600ml Coke + Regular Fries with          Coke
4     Vanilla Coke 600mL and Chips  Vanilla Coke
5   Garlic Bread and pepsi 1.25ltr         pepsi

如果可能,多个flavours 使用str.findall 作为列表,然后使用str.join

df['flavor'] = df['desc'].str.findall(pat, flags=re.I).str.join(' ')

print (df)
                              desc        flavor
0             Coke 600mL and Chips          Coke
1        Coke Zero 600mL and Chips     Coke Zero
2         390ml Coke + Small Fries          Coke
3  600ml Coke + Regular Fries with          Coke
4     Vanilla Coke 600mL and Chips  Vanilla Coke
5   Garlic Bread and pepsi 1.25ltr         pepsi

【讨论】:

    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多