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?