I have the following dataset:
SessionId Query 1 a 1 b 2 a 3 b 3 b 3 c
crosstab should do the job if I understand your question correctly:
import pandas as pd data = pd.DataFrame({'SessionId': [1, 1, 2, 3, 3, 3, 3], 'Query': ['a', 'b', 'a', 'b', 'b', 'c', 'a']}) pd.crosstab(data.SessionId, data.Query).plot.barh(stacked=True)