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.