I have this dataframe:
| index | Col1 | Col2 | Col3 |
|---|---|---|---|
| 0 | A | Day1 | 10 |
| 1 | A | Day2 | 9 |
| 2 | A | Day3 | 11 |
| 3 | B | Day1 | 12 |
| 4 | B | Day2 | 7 |
| 5 | B | Day3 | 5 |
| 6 | C | Day1 | 9 |
| 7 | C | Day2 | 10 |
| 8 | C | Day3 | 6 |
I want to transpose the columns so that it looks like this
| Date | A | B | C |
|---|---|---|---|
| Day1 | 10 | 12 | 9 |
| Day2 | 9 | 7 | 10 |
| Day3 | 11 | 5 | 6 |
Is there a way I can do that with Python? Thank you!
CodePudding user response:
Yes, it's called pivoting.
df = pd.DataFrame({'Col1': ['A'] * 3 ['B'] * 3 ['C'] * 3, 'Col2': np.tile(['Day1', 'Day2', 'Day3'], 3), 'Col3': [10, 9, 11, 12, 7, 5, 9, 10, 6]})
df.pivot('Col2', 'Col1', 'Col3')
CodePudding user response:
You can do it like @Alex shows you also there is another way that provides you more customization which is pivot_table which enables you to get average or any other aggregation on your data the default is mean
df.pivot_table(index="Col2",columns="Col1",values='Col3',aggfunc=sum)
df.pivot_table(index="Col2",columns="Col1",values='Col3',aggfunc='count')


