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

如何将CSV1的组名列按用户名匹配添加到CSV2对应行?

按用户名匹配合并两个CSV文件的组名列

问题场景

现有两个CSV文件:

  • CSV1:存储用户名与对应的组名
  • CSV2:存储用户名、MFA信息及其他无关列
    需要将CSV1中的组名作为新列添加到CSV2中,但两个文件行顺序不一致,无法通过排序完成匹配。

CSV1示例

Group Name      Username
Member          Bob.Joe
Support         Mike.House
Support         Annie.Naym
Member          Fayke.Nayme
Security        Anutha.Name

CSV2示例

Name        Login       MFA
Joe Schmo   joe.schmo   Type1
Bob Joe     bob.joe     Type2
Mike House  mike.house  Type2
Randum Guy  randum.guy  Type1
Annie Naym  annie,naym  Type2
Fayke Nayme fayke.name  Type2
Anutha.Name anutha.name Type2

期望输出

Name        Login       MFA     Group Name
Joe Schmo   joe.schmo   Type1   
Bob Joe     bob.joe     Type2   Member
Mike House  mike.house  Type2   Support
Randum Guy  randum.guy  Type1   
Annie Naym  annie,naym  Type2   Support
Fayke Nayme fayke.name  Type2   Member
Anutha.Name anutha.name Type2   Security

解决方案

方法1:Python脚本实现(推荐)

利用pandas库按用户名匹配合并,自动处理大小写和格式差异:

import pandas as pd

# 读取两个CSV文件(根据实际分隔符调整sep参数,示例为空格分隔)
df_group = pd.read_csv('csv1.csv', sep='\s+', engine='python')
df_user = pd.read_csv('csv2.csv', sep='\s+', engine='python')

# 统一用户名格式:转小写、替换逗号为点,避免格式不匹配
df_group['Username'] = df_group['Username'].str.lower().str.replace(',', '.')
df_user['Login'] = df_user['Login'].str.lower().str.replace(',', '.')

# 按用户名左合并,保留CSV2所有行,匹配不到的组名留空
merged_df = pd.merge(df_user, df_group, left_on='Login', right_on='Username', how='left')

# 整理列顺序并移除冗余列
merged_df = merged_df[['Name', 'Login', 'MFA', 'Group Name']]

# 导出结果到新CSV
merged_df.to_csv('merged_result.csv', sep='\t', index=False)

方法2:PowerShell脚本实现(Windows环境)

无需额外安装工具,直接用系统自带PowerShell处理:

# 读取两个CSV文件(根据实际分隔符调整-Delimiter)
$groupData = Import-Csv -Path "csv1.csv" -Delimiter "`t"
$userData = Import-Csv -Path "csv2.csv" -Delimiter "`t"

# 构建用户名到组名的映射表
$groupMap = @{}
foreach ($row in $groupData) {
    $normalizedUser = $row.Username.ToLower().Replace(',', '.')
    $groupMap[$normalizedUser] = $row.'Group Name'
}

# 遍历用户数据,添加组名列
$result = foreach ($row in $userData) {
    $normalizedLogin = $row.Login.ToLower().Replace(',', '.')
    [PSCustomObject]@{
        'Name'       = $row.Name
        'Login'      = $row.Login
        'MFA'        = $row.MFA
        'Group Name' = if ($groupMap.ContainsKey($normalizedLogin)) { $groupMap[$normalizedLogin] } else { '' }
    }
}

# 导出合并结果
$result | Export-Csv -Path "merged_result.csv" -Delimiter "`t" -NoTypeInformation

方法3:Excel公式实现(无代码方案)

适合不熟悉编程的用户,用VLOOKUP+IFERROR完成匹配:

  1. 同时打开CSV1和CSV2文件
  2. 在CSV2的空白列(如D列)添加表头Group Name
  3. 在D2单元格输入以下公式,下拉填充所有行:
    =IFERROR(VLOOKUP(LOWER(SUBSTITUTE(B2,",",".")), LOWER(SUBSTITUTE(CSV1!$B:$B,",",".")), 2, FALSE), "")
    
    公式说明:统一用户名格式后,在CSV1的用户名列中匹配,返回对应组名,匹配不到则显示空值
  4. 保存CSV2为新文件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:06:24