gpt4 book ai didi

python - 如何从 Object dtype 中提取特定的单词/数值?

转载 作者:行者123 更新时间:2023-12-04 04:13:09 29 4
gpt4 key购买 nike

我正在尝试使用 python(无关)为我的公司自动化一些事情,这就是我的问题。首先,我正在从邮箱中的特定文件夹创建数据框。(到这里没问题)”

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 36 entries, 0 to 35
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Unnamed: 0 36 non-null int64
1 Date 36 non-null datetime64[ns]
2 Subject 36 non-null object
3 Sender 36 non-null object
4 Body 36 non-null object
5 OpportunityID 36 non-null object
dtypes: datetime64[ns](1), int64(1), object(4)
memory usage: 1.8+ KB

正文列包含电子邮件轨迹(很长);然而,它们都包含 2 个我关心的基本信息:

  1. 每个电子邮件正文都包含一个“机会 ID:12345678(恰好 8 个字母长度)”

  2. 以下选项之一:Won/won/Lost/lost/Active/active/Hold/hold

我希望能够将 Body 列中的这两条信息提取到 2 个单独的列中。

无论我尝试什么,正文列都不会转换为字符串。此外,我尝试过正则表达式、str.split、extract、re、编码为utf-8。似乎没有任何效果。使用 re.findall(r"\d+",df.Body) 给出:TypeError:预期的字符串或类似字节的对象

正文栏示例:亲爱的 XX,

不幸的是,我们失去了这个。

最好的问候

XXX

发件人:XXXX发送时间:2020 年 4 月 15 日星期三下午 4:46致:XXX抄送:XXX主题:提醒更新X

我们正在清理管道,请您提供以下机会的状态更新。

请说明它是有效/赢取/丢失还是已取消

详情如下:

  • 机会 ID:12345678

  • 客户姓名:X

  • 机会描述:X

  • 合作伙伴:X

  • 项目经理:X

  • 总费用:1033000 沙特阿拉伯

  • 总费用(百万美元):

如果您有任何疑虑,请告诉我。X

最佳答案

你可以使用

df['Opportunity_ID']=df['Body'].str.extract(r'Opportunity\s+ID\s*:\s*(\d{8})') 
df['Keyword']=df['Body'].str.extract(r'(?i)\b(won|lost|active|hold)\b')

第一个 Opportunity\s+ID\s*:\s*(\d{8}) 正则表达式匹配 Opportunity,一个或多个空格(带有 \s+),一个 ID 子字符串,一个用 0+ 个空白字符括起来的冒号(参见 \s*:\s*),然后是 将任何八位数字捕获到第 1 组(参见 (\d{8}))。

r'(?i)\b(won|lost|active|hold)\b' 模式只匹配捕获组中的四个备选方案中的任何一个(借助 | 交替运算符)以不区分大小写的方式作为整个单词(\b 是单词边界)(参见 (?i) 修饰符)。

关于python - 如何从 Object dtype 中提取特定的单词/数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61342182/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com