Pandas Dataframe: cómo agregar una columna con el número de ocurrencias en otra columna

Tengo que seguir df:

Col1 Col2 test Something test2 Something test3 Something test Something test2 Something test5 Something 

Quiero tener

 Col1 Col2 Occur test Something 2 test2 Something 2 test3 Something 1 test Something 2 test2 Something 2 test5 Something 1 

He intentado usar:

 df["Occur"] = df["Col1"].value_counts() 

Pero no ayudó. Tengo la columna Ocurrir llena de ‘NaN’

groupby en ‘col1’ y luego aplique la transform en Col2 para devolver una serie con su índice alineado con el df original para que pueda agregarlo como una columna:

 In [3]: df['Occur'] = df.groupby('Col1')['Col2'].transform(pd.Series.value_counts) df Out[3]: Col1 Col2 Occur 0 test Something 2 1 test2 Something 2 2 test3 Something 1 3 test Something 2 4 test2 Something 2 5 test5 Something 1 

También puedes usar GroupBy + transform con size :

 df['Occur'] = df.groupby('Col1')['Col1'].transform('size') print(df) Col1 Col2 Occur 0 test Something 2 1 test2 Something 2 2 test3 Something 1 3 test Something 2 4 test2 Something 2 5 test5 Something 1