Je Stra
Je Stra

Reputation: 117

pandas dataframe group by multiple columns and count distinct values

I currently have a Dataframe that looks something like this:

enter image description here

The unique values are ['Somewhat Interested', 'Not at all Interested', nan,'Very Interested']

How would I go about creating a new dataframe that would have the same columns as above but for the index values 'Somewhat Interested', 'Not at all Interested', nan,'Very Interested' and the values inside the cell are the counts of each type of response. Im thinking a pivot table might do the trick but Im not sure.

What I want

In person meet ups alumni webinars alumni webinars etc...
Some what interested 24 32 12
Not interested 32 42 4
very intersted 21 31 53

Upvotes: 1

Views: 474

Answers (2)

Always Right Never Left
Always Right Never Left

Reputation: 1481

Combine value_counts with apply to do it per column:

df.apply(pd.value_counts)

Upvotes: 1

user17242583
user17242583

Reputation:

Actually, you can just apply pd.Series.value_counts for each column:

counts = df.fillna('NaN').apply(pd.Series.value_counts).fillna(0).astype(int)

Upvotes: 0

Related Questions