使用Pandas动态识别CSV日期列并统一格式为MM-DD-YYYY
PowerShell 解决方案
通过尝试解析每列数据为DateTime对象,动态识别日期列,再统一格式化输出。
# 读取CSV文件 $csvData = Import-Csv -Path "input.csv" # 定义支持的输入日期格式 $dateFormats = "yyyy-MM-dd", "dd-MM-yyyy" # 遍历所有列进行检测与转换 foreach ($column in $csvData[0].PSObject.Properties.Name) { $validDateCount = 0 $parsedDates = @() # 逐行尝试解析当前列的值 foreach ($row in $csvData) { $cellValue = $row.$column $parsedDate = $null if (-not [string]::IsNullOrWhiteSpace($cellValue)) { # 尝试用两种格式解析日期 foreach ($format in $dateFormats) { if ([DateTime]::TryParseExact($cellValue, $format, [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$parsedDate)) { $validDateCount++ break } } } $parsedDates += $parsedDate } # 有效日期占比≥90%则判定为日期列,统一转换格式 if ($validDateCount / $csvData.Count -ge 0.9) { for ($i = 0; $i -lt $csvData.Count; $i++) { if ($parsedDates[$i] -ne $null) { $csvData[$i].$column = $parsedDates[$i].ToString("MM-dd-yyyy") } } } } # 导出处理后的CSV $csvData | Export-Csv -Path "output.csv" -NoTypeInformation -Encoding UTF8
内容的提问来源于stack exchange,提问作者Arty155
相关产品推荐
相关产品推荐

