in reply to A little golf anyone?

Here's one to get people started. It weighs in at 164 162 characters and is probably disqualified for not pretty-printing the output, but it does what you ask:
df -k|perl -ne'print join"\t",map{/^\d+$/?($_=$_/1024)<1?p($_*1024)."K +":($_=$_/1024)<1?p($_*1024)."M":p($_)."G":$_}split/\s+/;print"\n";sub + p{sprintf"%.2f",shift}'

CU
Robartes-

Update: Killed two spaces.