разбиение файла CSV по столбцам

У меня действительно огромные файлы CSV. Есть около 1700 столбцов и 40000 строк, как показано ниже:

x,y,z,x1,x2,x3,x4,x5,x6,x7,x8,x9,...(about 1700 more)...,x1700
0,0,0,a1,a2,a3,a4,a5,a6,a7,a8,a9,...(about 1700 more)...,a1700
1,1,1,b1,b2,b3,b4,b5,b6,b7,b8,b9,...(about 1700 more)...,b1700
// (about 40000 more rows below)

Мне нужно разбить этот файл CSV на несколько файлов, которые содержат меньшее количество столбцов, таких как:

# file1.csv
x,y,z
0,0,0
1,1,1
... (about 40000 more rows below)

# file2.csv
x1,x2,x3,x4,x5,x6,x7,x8,x9,...(about 1000 more)...,x1000
a1,a2,a3,a4,a5,a6,a7,a8,a9,...(about 1000 more)...,a1000
b1,b2,b3,b4,b5,b6,b7,b8,b9,...(about 1000 more)...,b1700
// (about 40000 more rows below)

#file3.csv
x1001,x1002,x1003,x1004,x1005,...(about 700 more)...,x1700
a1001,a1002,a1003,a1004,a1005,...(about 700 more)...,a1700
b1001,b1002,b1003,b1004,b1005,...(about 700 more)...,b1700
// (about 40000 more rows below)

Есть ли какая-либо программа или библиотека, делающая это?

Я гуглил это, но программы, которые я нашел, разбивают файл только по строкам, а не по столбцам.

Или какой язык я мог бы использовать, чтобы сделать это эффективно?

Я могу использовать R, сценарий оболочки, Python, C / C ++, Java

Ответы на вопрос(4)

Ваш ответ на вопрос