file1.csv
A,,C,D
A,,C,D
A,,C,D
A,,C,D
file2.csv
A,B
A,B
A,B
A,B
желаемый Output.csv
A,B,C,D
A,B,C,D
A,B,C,D
A,B,C,D
Я пытался использовать "присоединиться" и "вставить" безрезультатно. Для этого есть команда bash? Колонка «А» одинакова в обоих .csv
файлах.
Ответы:
С единственной
awk
командой:Получите строку из file1 и сохраните ее в локальной переменной
f1
, затем напечатайте строку, которая была сохранена в,f1
и, наконец, напечатайте третье ($3
) и forward ($3
) поля из file1, которые разделены запятой,
, и измените OFS (разделитель выходного поля [пробел по по умолчанию]) до запятой (,
).Короткая команда будет такой:
вставьте файл2, затем вырежьте и вставьте третий столбец в следующий (
-f3-
) из файла1.С
awk
иpaste
(вариант А)Команда ниже также копирует последние два столбца (
C,D
) из файла file1 в конце каждой строки в файле file2:Выше команды вставьте содержимое file2, затем напечатайте запятую delimiter (
-d','
), затем вставьте два последних поля (NF
это индекс последнего поля и$NF
является строкой, которой является его индексNF
. Так же$(NF-1)
как и второе поле перед последним полем) из file1, когда эти индексы переопределяются или разделяется с запятой зрителя (-F','
).С
awk
иpaste
(вариант Б)Эта команда также является такой же, как указано выше (
$3
и$4
указывает на третье и четвертое поле каждой строки из file1):Или другое решение с
cut
командой:Команда cut в приведенной выше команде сначала вырезает первое поле (
-f1
индексируемое с помощью разделителя запятых (-d.
)) из file1 (cut -d, -f1 file1
), затем вырезает и вставляет второе поле file2 (cut -d, -f2 file2
) и, наконец, вырезает и вставляет третий столбец (-f3
) в nexts (-
) из file1 (cut -d, -f3- file1
) снова.Эта команда также возвращает тот же результат:
вставьте второе поле из file1 (
awk -F',' '{print $1}' file1
), затем напечатайте запятую (-d,
), затем вставьте второй столбец из file2 (awk -F',' '{print $2}' file2
), наконец, вставьте второй и последний столбец file1 (awk -F',' '{print $3","$4}' file1
) снова.источник
Вот красота (я думаю):
Разбить по шагам:
Шаг 1. Установите csvkit:
Шаг 2. Используйте команду соединения с запятой в качестве разделителя
Шаг 3. Накормите его реальными столбцами, которые вы хотите. Обратите внимание, как вы вводите первый столбец дважды, потому что это тот, на котором фактически выполняется соединение (поведение по умолчанию
join
).или сокращенно:
При желании вы можете перенаправить этот стандартный вывод в файл (требуемый выход).
преимущества
Этот метод имеет несколько преимуществ по сравнению с другими.
Прежде всего: он выполняет реальное соединение. Это означает, что его можно использовать и для более сложных данных. Например, очень легко выполнить соединение на другом поле. Он не просто смотрит на положение поля, но и действительно учитывает столбец. На самом деле он работает с форматом данных (CSV) и не обрабатывает его как текст.
Во-вторых, он использует очень мощный инструментарий CSV, который также позволяет а) отображать статистику с помощью одной команды (
csvstats)
, б) проверять, являются ли данные чистыми (csvclean
), а также преобразовывать их в json, в sql или даже загружать в питон! Этот инструментарий широко используется в науке о данных для подготовки данных.источник
sudo apt-get install python-dev python-pip python-setuptools build-essential
- ссылкаВот еще один красивый. Я думаю, что это самый простой из всех предложений на данный момент.
Если вы не установили csvtool уже в прошлом, вы должны
sudo apt-get install csvtool
.Из документов:
Обратите внимание, как в нашем случае мы заменяем вторые столбцы файлов.
Примеры
file1.csv
file2.csv
Объединение двух файлов:
По сути, вы вставляете второй столбец как второй
file2.csv
столбецfile1.csv
.Обратите внимание, что это также работает с тем же документом. Если вы хотите поменять местами два столбца, вы можете сделать это, используя тот же файл, что и input.csv и update.vsc.
источник
Чтобы переместить выбранное количество столбцов из одного файла в другой:
из двух файлов:
file_1
file_2
Когда вы установите
cols = 1
:Но когда вы установите
cols = 2
:cols = 3
:Как пользоваться
Скопируйте его в пустой файл, указать путь к
file1
,file2
а число столбцов , чтобы переместить, сохранить его , какmove.py
и запустить его:Таким же образом можно добавить один или несколько столбцов из середины столбцов исходного файла.
источник
import csv
хотя.Еще один метод в Python через модуль CSV.
script.py
Чтобы запустить вышеуказанный скрипт,
Выход:
источник