Как объединить 2 смежных столбца в файле CSV в один столбец, разделенные запятой?(PowerShell) - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть файл CSV с 2 столбцами, широта и долгота.Я пытаюсь объединить 2 столбца в 1, разделенные запятой (без пробелов).

Входной файл CSV, первые 5 строк

latitude    longitude
35.1868     -106.6652
42.3688     -83.4799
40.3926     -79.9052
40.5124     -88.9883
38.5352     -90.0006

Моя цель - взять этот CSV и создать новый файл с одним столбцом, в котором оба значения разделены запятой (без пробелов вмежду) используя PowerShell.Смотрите желаемый результат ниже ...

location
35.1868,-106.6652
42.3688,-83.4799
40.3926,-79.9052
40.5124,-88.9883
38.5352,-90.0006

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Самый простой способ IMO - это Select-Object с вычисляемым свойством

Import-Csv .\input.csv | 
  Select-Object @{Name='Location';Expression={$_.latitude,$_.longitude -join ','}} |
    Export-Csv .\output.csv -NoTypeInformation

> Get-Content .\output.csv
"Location"
"35.1868,-106.6652"
"42.3688,-83.4799"
"40.3926,-79.9052"
"40.5124,-88.9883"
"38.5352,-90.0006"

Edit

В случае, если есть другие столбцы, на которые не должно влиятьобъединение,
см. этот измененный Select-Object

Select-Object *,@{N='Location';E={$_.latitude,$_.longitude -join ','}} -Exclude latitude,longitude|

Но новый столбец будет последним.

0 голосов
/ 24 декабря 2018

первые десять строк - это просто способ вставить пример данных в сценарий без необходимости записывать их в файл и затем читать обратно. [ ухмылка ]

use Import-CSV чтобы получить реальные данные в скрипт.

# fake reading in a CSV file
#    in real life, use Import-CSV
$InStuff = @'
latitude, longitude
35.1868, -106.6652
42.3688, -83.4799
40.3926, -79.9052
40.5124, -88.9883
38.5352, -90.0006
'@ | ConvertFrom-Csv

$LocationList = foreach ($IS_Item in $InStuff)
    {
    [PSCustomObject]@{
        Location = @($IS_Item.Latitude, $IS_Item.Longitude) -join ','
        }
    }

# on screen
$LocationList

# CSV file
$LocationList |
    Export-Csv -LiteralPath "$env:TEMP\JohnnyCarino_LocationList.csv" -NoTypeInformation

вывод на экран ...

Location         
--------         
35.1868,-106.6652
42.3688,-83.4799 
40.3926,-79.9052 
40.5124,-88.9883 
38.5352,-90.0006

Содержимое файла CSV ...

"Location"
"35.1868,-106.6652"
"42.3688,-83.4799"
"40.3926,-79.9052"
"40.5124,-88.9883"
"38.5352,-90.0006"
...