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

如何合并CSV中部门编号以‘8’开头的行并统一OwnerEmail?

解决方案

PowerShell 实现步骤

方法一:分组处理

  1. 导入并预处理CSV数据:将Costs字段转换为数值类型,确保求和计算准确。
  2. 拆分数据组:分离出DepartmentNumber以'8'开头的行和其余行。
  3. 合并目标组:汇总Costs总和,统一设置OwnerEmail为test@mail.com,保留目标组中任意一行的Employee ID和DepartmentNumber。
  4. 合并结果并输出:将合并后的行与其余行组合,输出或保存为新CSV文件。

完整代码:

# 导入CSV并转换Costs为数值类型
$csvData = Import-Csv -Path "input.csv" | ForEach-Object {
    $_.Costs = [decimal]$_.Costs
    $_
}

# 分离DepartmentNumber以'8'开头的行和其他行
$targetGroup = $csvData | Where-Object { $_.DepartmentNumber -like '8*' }
$remainingRows = $csvData | Where-Object { $_.DepartmentNumber -notlike '8*' }

# 计算目标组的总成本
$totalCost = ($targetGroup | Measure-Object -Property Costs -Sum).Sum

# 创建合并后的行
$mergedRow = [PSCustomObject]@{
    'Employee ID'     = $targetGroup[0].'Employee ID'
    OwnerEmail        = 'test@mail.com'
    DepartmentNumber  = $targetGroup[0].DepartmentNumber
    Costs             = $totalCost.ToString("N2") # 格式化为带千分位的两位小数
}

# 合并所有行并输出
$finalResult = $remainingRows + $mergedRow
$finalResult | Format-Table -AutoSize

# 可选:导出到新CSV文件
# $finalResult | Export-Csv -Path "output.csv" -NoTypeInformation

方法二:使用Group-Object简化分组

通过自定义分组键,将所有以'8'开头的行归为同一组,其余行各自为独立组,再分别处理:

$csvData = Import-Csv -Path "input.csv" | ForEach-Object {
    $_.Costs = [decimal]$_.Costs
    $_
}

$finalResult = $csvData | Group-Object -Property {
    # 自定义分组键:以'8'开头的行归为"Group8",其他行用Employee ID作为唯一标识
    if ($_.DepartmentNumber -like '8*') { "Group8" } else { $_.EmployeeID }
} | ForEach-Object {
    if ($_.Name -eq "Group8") {
        # 处理合并组
        [PSCustomObject]@{
            'Employee ID'     = $_.Group[0].'Employee ID'
            OwnerEmail        = 'test@mail.com'
            DepartmentNumber  = $_.Group[0].DepartmentNumber
            Costs             = ($_.Group | Measure-Object -Property Costs -Sum).Sum.ToString("N2")
        }
    } else {
        # 保留原始行并格式化Costs
        $row = $_.Group[0]
        $row.Costs = $row.Costs.ToString("N2")
        $row
    }
}

$finalResult | Format-Table -AutoSize

说明

  • 代码中input.csv和output.csv需替换为实际文件路径。
  • 格式化Costs为N2会自动添加千分位分隔符,匹配期望结果的格式。
  • 若需保留所有目标组的DepartmentNumber信息,可将DepartmentNumber字段修改为$_.Group.DepartmentNumber -join ', '。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:51:22