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

如何在Pandas中通过部分字符串匹配新建DataFrame的Tenor列

解决DataFrame提取指定Tenor关键词的问题

嘿,我知道你为啥新列全返回FALSE了——你的代码里x in ['3Y','3M','1Y','1M']是在判断整个字符串x是否完全等于列表里的某个关键词,但你的数据都是带前缀/后缀的长字符串(比如ABC-3Y-ORDER),自然全匹配失败啦!

下面是实现你需求的最优方法,效率高且精准:

核心思路

用pandas的矢量化字符串方法str.extract结合正则表达式,直接从字符串中提取匹配的关键词,未匹配的自动填充NaN(如果需要FALSE可以后续替换)。这种方法比apply+lambda高效得多,尤其适合处理5万条的大数据量。

代码实现

import pandas as pd

# 假设你的DataFrame是df,目标列名为COLUMN
pattern = r'(3Y|3M|2Y|1Y)'  # 正则捕获组,匹配你要的关键词
df['Tenor'] = df['COLUMN'].str.extract(pattern, expand=False)

# 如果需要把未匹配的NaN替换成FALSE,加上这一行
# df['Tenor'] = df['Tenor'].fillna(False)

效果验证

用你的示例数据测试,结果如下:

IndexCOLUMNTenor
0ABC-1M-DeliveryorderNaN
1KGF-ORDERDelivery-2Y2Y
2DEFGHIABC1M-OPENNaN
3KGFABCNaN
4ABC-3Y-ORDER3Y

为什么这是最优解?

  • 矢量化操作:pandas的字符串方法是底层优化过的,比循环/apply快很多,处理5万条数据毫无压力
  • 精准提取:正则表达式的捕获组能直接拿到你需要的关键词,不需要额外的判断逻辑
  • 灵活可控:可以轻松调整正则模式(比如如果需要匹配1M,只要把1M加入pattern即可),也能自由替换未匹配的值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:28:14