lllllllllzm 2024-10-12 11:47 采纳率: 0%
浏览 12
已结题

根据企业名称 对照两个文件 样本筛选/匹配

有两个csv文件 a和b。a文件有50万行,只有一列数据 每行对应内容为不同的公司名称,。b文件有400万行。有多列数据 其中第一列 为 企业名称,每行对应的内容为不同的公司名称。现要根据a文件的 企业名称 对b文件进行筛选处理,遍历b 文件 企业名称的每一行内容,保存企业名称 内容与a 企业名称的某一行内容相同的行 给出具体代码
(即如何从400万条的b中筛选出50w条样本,以企业名称作为对照筛选条件
给出python代码

  • 写回答

30条回答 默认 最新

  • 阿齐Archie 嵌入式领域优质创作者 2024-10-12 11:48
    关注
    获得0.30元问题酬金

    以下参考免费微信小程序:皆我百晓生 作答,并由阿齐Archie整理回复,若还有疑问可评论或留言。

    在Stata中,你可以使用merge命令来合并两个数据集。由于你想要筛选出b文件中与a文件中企业名称相同的行,你可以使用1:m(一对多)的合并方式。以下是Stata中的具体代码:

    * 加载文件a
    use a.dta, clear
    
    * 生成企业名称的唯一标识符
    egen id_a = group(企业名称)
    
    * 保存带有唯一标识符的文件a
    save a_with_id.dta, replace
    
    * 加载文件b
    use b.dta, clear
    
    * 生成企业名称的唯一标识符
    egen id_b = group(企业名称)
    
    * 合并文件a和文件b,以企业名称为匹配键
    merge 1:m 企业名称 using a_with_id.dta
    
    * 筛选出匹配成功的行(即企业名称在两个文件中都存在的行)
    keep if _merge == 3
    
    * 删除合并产生的辅助变量
    drop _merge id_a id_b
    
    * 保存筛选后的结果
    save b_filtered.dta, replace
    

    在Python中,你可以使用pandas库来处理这个问题。以下是Python中的具体代码:

    import pandas as pd
    
    # 读取文件a和b
    df_a = pd.read_csv('a.csv')  # 假设文件a是CSV格式
    df_b = pd.read_csv('b.csv')  # 假设文件b是CSV格式
    
    # 确保企业名称列没有重复值
    df_a = df_a.drop_duplicates(subset='企业名称')
    
    # 将文件a转换为集合,以提高匹配效率
    set_a = set(df_a['企业名称'])
    
    # 筛选出文件b中企业名称在文件a中的行
    df_b_filtered = df_b[df_b['企业名称'].isin(set_a)]
    
    # 保存筛选后的结果
    df_b_filtered.to_csv('b_filtered.csv', index=False)
    

    请注意,这些代码假设你的文件是CSV格式的。如果它们是其他格式,比如Excel或Stata自己的.dta格式,你需要使用相应的pandas函数(如pd.read_excelpd.read_stata)来读取它们。

    在Stata代码中,我使用了egen命令来创建一个唯一的标识符,以便在合并后能够识别哪些行是匹配的。在Python代码中,我使用了pandas的drop_duplicates方法来确保企业名称列没有重复值,然后使用isin方法来筛选出匹配的行。

    在实际应用中,你可能需要根据你的文件路径和文件格式调整这些代码。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 修改了问题 10月12日
  • 修改了问题 10月12日
  • 修改了问题 10月12日
  • 展开全部