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

基于df1列名前缀(公司名)匹配筛选df2列的技术问询

匹配列名前缀筛选数据框的解决方案

没问题,我来帮你搞定这个根据df1公司前缀筛选df2列的需求!下面分两种常用数据分析语言给出具体实现方法:

R语言实现步骤

  • 第一步:从df1的列名中提取目标公司前缀(排除date列,去掉末尾的- PI后缀)
  • 第二步:用正则匹配筛选df2中符合前缀的列,同时保留date列
# 提取df1中的公司前缀
df1_companies <- sub("- PI$", "", colnames(df1)[colnames(df1) != "date"])

# 筛选df2的目标列并生成子集
df2_subset <- df2[, c("date", colnames(df2)[grepl(paste0("^(", paste(df1_companies, collapse = "|"), ") - CV$"), colnames(df2))])]

代码说明:

  • sub("- PI$", "", ...) 用来精准移除列名末尾的- PI,得到纯公司名称(比如Com1、Com3)
  • grepl结合正则表达式,匹配df2中以目标公司名开头、以- CV结尾的列,确保完全匹配前缀规则

Python(Pandas)实现步骤

  • 第一步:拆分df1的列名,提取公司前缀(排除date列)
  • 第二步:遍历df2的列名,筛选出前缀匹配的列,加上date列生成子集
import pandas as pd

# 提取df1中的公司前缀列表
df1_companies = [col.split(" - PI")[0] for col in df1.columns if col != "date"]

# 筛选df2需要保留的列
keep_cols = ["date"] + [col for col in df2.columns if col.split(" - CV")[0] in df1_companies]

# 生成df2的子集
df2_subset = df2[keep_cols]

代码说明:

  • split(" - PI")[0] 将列名按 - PI拆分,取第一部分作为公司前缀
  • 列表推导式快速筛选df2中符合前缀要求的列,最后拼接date列完成子集生成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:28:44