So, I collected data from 21 participants with 16 EEG channels and I extracted the Gamma band. My current dataframe looks like this ([336 rows x 2 columns]):
Channels | Gamma |
---|---|
Fp1 | 0.345908 |
Fp2 | 0.121232 |
F3 | 0.213212 |
..... | .... |
Now I want to transpose it in such a way, that I have the gamma values for each channel in one column. Like this:
Fp1 | Fp2 | F3 | .... | Oz |
---|---|---|---|---|
0.067005 | 0.345908 | 0.207540 | .... | 0.013512 |
0.137292 | 0.121232 | 0.121210 | .... | 0.121111 |
0.112121 | 0.213212 | 0.123443 | .... | 0.432233 |
when I just transpose the dataframe, then I get one row with all channels next to each other:
Fp1 | Fp1 | Fp1 | .... | Oz | Oz | Oz |
---|---|---|---|---|---|---|
0.067005 | 0.345908 | 0.207540 | .... | 0.013512 | 0.12123 | 0.112423 |
I looked at pd.melt but I can't figure it out. Can someone help?
Thank you in advance!
One approach is to group by the Channels and then set these groups as columns of your new dataframe. Assuming following dataframe:
Channels Gamma
0 Fp1 0.345908
1 Fp2 0.121232
2 Fp1 0.455908
3 Fp2 0.213212
Then apply this code to the dataframe:
pd.concat(
{k: g.reset_index(drop=True)
for k, g in df.groupby('Channels')['Gamma']}, axis=1)
and receive the following output:
Fp1 Fp2
0 0.345908 0.121232
1 0.455908 0.213212