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

PowerShell实现CSV首行插入数据并保留原日期下移原有行

PowerShell 处理CSV插入行并调整后续数据

问题分析

需要在CSV的第一个数据行(索引0)插入新行:保留原行的Date、Game、Team字段值,将Win/Loss设为0;同时原数据行整体下移,且下移后的行日期自动加1天、Game编号加1,避免出现日期重复、编号断层的问题。

解决代码

# 读取目标CSV文件
$originalData = Import-Csv -Path ".\source.csv"

# 初始化新数据集合
$newData = @()

# 生成要插入的新行:复制原第一行数据,仅修改Win和Loss为0
$insertRow = $originalData[0] | Select-Object *
$insertRow.Win = 0
$insertRow.Loss = 0
$newData += $insertRow

# 遍历原所有数据行,调整日期和Game编号后加入新集合
foreach ($row in $originalData) {
    # 复制当前行对象,避免修改原数据
    $updatedRow = $row | Select-Object *
    # 转换日期格式并加1天,保持原显示格式
    $updatedDate = ([DateTime]$row.Date).AddDays(1)
    $updatedRow.Date = $updatedDate.ToString("M/d/yy")
    # Game编号加1
    $updatedRow.Game = [int]$row.Game + 1
    # 加入新数据集合
    $newData += $updatedRow
}

# 将处理后的数据写入新CSV文件(可指定新路径避免覆盖原文件)
$newData | Export-Csv -Path ".\updated.csv" -NoTypeInformation -Encoding UTF8

代码说明

  • Import-Csv:将CSV文件转为对象数组,直接通过字段名操作数据,无需手动拆分字符串
  • 插入行处理:复制原第一行的Date/Game/Team值,仅重置Win/Loss为0
  • 原数据行调整:
    • 用Select-Object *复制行对象,防止修改原CSV的原始数据
    • 把Date转为DateTime类型后加1天,再转回原格式(M/d/yy)
    • Game字段转为整数后加1,保证编号连续
  • Export-Csv:写入新文件时,-NoTypeInformation避免生成PowerShell专属的类型信息行,-Encoding UTF8确保文件编码兼容大多数场景

效果验证

原CSV内容:

Date,Game,Team,Win,Loss
4/13/23,1,PHI,1,0
4/14/23,2,PHI,0,1

执行后生成的CSV:

Date,Game,Team,Win,Loss
4/13/23,1,PHI,0,0
4/14/23,2,PHI,1,0
4/15/23,3,PHI,0,1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:22:48