I think you need value_counts
, rename_axis
and reset_index
for DataFrame
:
df = df['Status'].value_counts().rename_axis('Status').reset_index(name='Count')
print (df)
Status Count
0 B 4
1 A 3
Or aggregate by GroupBy.size
:
df = df.groupby('Status').size().reset_index(name='Count')
print (df)
Status Count
0 A 3
1 B 4
EDIT:
But if want get size by column ID
, another column is not necessary:
df1 = df.groupby('ID')['Status'].size().reset_index(name='Count')
print (df1)
ID Count
0 1 2
1 2 1
2 3 1
3 4 1
4 5 2
df2 = df.groupby('ID')['ID'].size().reset_index(name='Count')
print (df2)
ID Count
0 1 2
1 2 1
2 3 1
3 4 1
4 5 2
df3 = df.groupby('ID').size().reset_index(name='Count')
print (df3)
ID Count
0 1 2
1 2 1
2 3 1
3 4 1
4 5 2
But is possible use:
df4 = df.groupby('ID')['Status'].value_counts().reset_index(name='Count')
print (df4)
ID Status Count
0 1 A 2
1 2 B 1
2 3 B 1
3 4 B 1
4 5 A 1
5 5 B 1
What is same as:
df4 = df.groupby(['ID', 'Status']).size().reset_index(name='Count')
print (df4)
ID Status Count
0 1 A 2
1 2 B 1
2 3 B 1
3 4 B 1
4 5 A 1
5 5 B 1
What is the difference between size and count in pandas?