I'm starting with a dataframe as below (df2):
| - | Day | Sorbent | Gabapentin 1 | 
|---|---|---|---|
| 0 | 1 | AX | 0.0 | 
| 1 | 1 | AX | 0.0 | 
| 2 | 1 | AX | 0.0 | 
| 3 | 1 | ABN | 0.0 | 
| 4 | 1 | ABN | 0.0 | 
| .. | ... | ... | ... | 
| 84 | 30 | Dex | 4.4 | 
I want to end up with a data frame as below:
| Day | ABN | AX | Dex | ENV | WCX | |
|---|---|---|---|---|---|---|
| 0 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 
| 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 
| 2 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 
| 3 | 4 | 0.0 | 0.3 | 0.1 | 0.0 | 0.1 | 
| 4 | 4 | 0.0 | 0.3 | 0.1 | 0.1 | 0.2 | 
| ... | ... | ... | ... | ... | .. | |
| 30 | 30 | 0.0 | 3.3 | 4.4 | 8.5 | 10.1 | 
So I have tried a variety of input and the closest I can get is:
df3 = df2.set_index(['Day', 'Sorbent'], append = True)
print(df3.unstack(level = -1))
Which gives:
    Gabapentin 1                   
| Sorbent | ABN | AX | Dex | ENV | WCX | 
|---|---|---|---|---|---|
| Day | |||||
| 0 | 1 | NaN | 0.0 | NaN | NaN | 
| 1 | 1 | NaN | 0.0 | NaN | NaN | 
| 2 | 1 | NaN | 0.0 | NaN | NaN | 
| 3 | 1 | 0.0 | NaN | NaN | NaN | 
| 4 | 1 | 0.0 | NaN | NaN | NaN | 
| ... | ... | ... | ... | ... | |
| 84 | 30 | NaN | NaN | 0.0 | NaN | 
| 85 | 30 | NaN | NaN | 0.0 | NaN | 
| 86 | 30 | NaN | NaN | NaN | 0.0 | 
| 87 | 30 | NaN | NaN | NaN | 0.0 | 
| 88 | 30 | NaN | NaN | NaN | 0.0 | 
I've tried pivots etc. but I don't want the data averaged out.
If anyone has any ideas I'm sure I'm just missing something really silly but I would appreciate any help.
 
    