I cooked up something like this, it should work for even larger number of columns. It has to read through the file twice, although one could get away with saving it all in an array but since I don't know how many lines and columns there may be, it could be huge, I guess this will do:
lakris@ubuntu:~/projekt/scripts/maxcol$ cat file
sengwa,china
tom,america,northamerica
smith,america
walter
lakris@ubuntu:~/projekt/scripts/maxcol$ cat col.sh
#!/bin/bash
maxval=0
while read line
do
newval=$(echo $line|tr , " "|wc -w)
[ $newval -gt $maxval ] && maxval=$newval
done < file
>newfile
while read line
do
arr=($(echo $line|tr , " "))
echo -n ${arr[0]} >> newfile
for ((i=1;i<$maxval;i++))
do
echo -n ",${arr[$i]}" >> newfile
done
echo >> newfile
unset arr
done < file