You can do it in awk. It also depends on the system you use and available
tools you have. Ben gave you a solution for the bash shell and sed.
In awk you can do, say,
awk '
!tag { tag=FILENAME; gsub(/^.*_|\..*$/,"",tag) }
{ print tag","$0 }
' test_data_GA.csv > out
which will produce the desired output in a file 'out', and then replace the
original file on shell level by
mv out test_data_GA.csv
or you can do all, including that renaming, inside awk (i.e. awk will call
shell code using system())
awk '
!tag { tag=FILENAME; gsub(/^.*_|\..*$/,"",tag) }
{ print tag","$0 > "out" }
END { system("mv out test_data_GA.csv") }
' test_data_GA.csv
If you happen to have a newer version of GNU awk there's also an "inplace"
option (similar to the "sed -i" inplace option you've seen in Ben's code) to
directly work on the input file.
Janis