GNU parallel can read csv directly, and has item replacement built in.
More or less directly taken from man parallel:
parallel --csv my_cmd'my_cmd --arg1 {2} --arg2 {1} --arg3 {3}' :::: file.csv
Add -j1 before my_cmd to these invocations be executed one-after-the-other. Or don't, and have them be executed in parallel.
(on debian and fedora, it's in the package called parallel, not in moreutils or moreutils-parallel)
Thank you, Ole Tange!