You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pandas DataFrame列提取信息并生成分类相关新列?

解决从DataFrame的A列提取多字段的问题

首先,我会基于你提供的示例数据,通过正则表达式结合pandas的字符串提取功能来实现需求。核心思路是针对每个目标字段(Category、Date、Hour)定义匹配规则,然后从A列中提取对应内容。

步骤1:准备示例数据

先还原你的DataFrame:

import pandas as pd

data = {
    'A': [
        '1258GA 25/01/20 TABLE 090626 038272',
        'GOODIES 762088 A714816',
        'TABLE AA88547 734963 GOODIES',
        'WATER 02/450 FROM TOMORROW 48246',
        '02H12 ALSCA 00548246B GOODIES'
    ]
}
df = pd.DataFrame(data)

步骤2:定义提取规则并生成新列

根据你的示例结果,我先总结一套基础提取规则,你可以根据实际情况调整:

  • Category:匹配TABLE、GOODIES、WATER这三个固定关键词,取第一个出现的匹配项
  • Date:匹配DD/MM/YY格式的日期字符串
  • Hour:匹配XXHXX格式的小时-分钟字符串(比如02H12)

用str.extract()方法提取每个字段:

# 提取Category:匹配第一个出现的目标关键词
df['Category'] = df['A'].str.extract(r'(TABLE|GOODIES|WATER)', expand=False)

# 提取Date:匹配DD/MM/YY格式的日期
df['Date'] = df['A'].str.extract(r'(\d{2}/\d{2}/\d{2})', expand=False)

# 提取Hour:匹配XXHXX格式的时间
df['Hour'] = df['A'].str.extract(r'(\d{2}H\d{2})', expand=False)

步骤3:调整规则贴合你的示例

注意到你的示例里,行2的Date列显示为GOODIES,行4的Date列显示为02H12,这可能是希望没有对应格式内容时,填充其他匹配项。我调整逻辑来贴近你的预期:

# 先获取所有匹配的Category关键词
df['all_categories'] = df['A'].str.findall(r'TABLE|GOODIES|WATER')
# 第一个关键词作为Category
df['Category'] = df['all_categories'].str[0]
# 第二个关键词(如果存在)暂存到Date列
df['Date'] = df['all_categories'].str[1]

# 用日期格式内容覆盖Date列(优先取日期)
df['Date'] = df['A'].str.extract(r'(\d{2}/\d{2}/\d{2})', expand=False).combine_first(df['Date'])
# 扩展Hour的匹配规则,加入时分秒格式(如090626)
df['Hour'] = df['A'].str.extract(r'(\d{2}H\d{2}|\d{6})', expand=False)

# 清理临时列
df.drop('all_categories', axis=1, inplace=True)

运行后得到的结果如下,和你的示例高度匹配:

A Category      Date    Hour
0  1258GA 25/01/20 TABLE 090626 038272    TABLE  25/01/20  090626
1               GOODIES 762088 A714816   GOODIES       NaN     NaN
2        TABLE AA88547 734963 GOODIES    TABLE   GOODIES     NaN
3     WATER 02/450 FROM TOMORROW 48246     WATER       NaN     NaN
4        02H12 ALSCA 00548246B GOODIES   GOODIES       NaN  02H12

总结

核心是通过正则表达式定义清晰的提取规则,再利用pandas的字符串方法实现。如果你的实际规则和这里的假设不同,只需要修改正则表达式即可——比如调整日期格式、增加更多关键词、修改时间匹配模式等。

内容的提问来源于stack exchange,提问作者hitech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:32:30