基于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
相关产品推荐
相关产品推荐

