Hola a todos
Estoy trabajando con lo siguiente:

En esta tabla podemos ver las variables, mes, id cliente, artículo, y precio neto
Mes 1 es enero, 2 febrero y así sucesivamente.
En principio quiero saber la cantidad de clientes que compran cada mes, para esto hago un conteo usando el Id cliente cómo base, dado que este es único para cada cliente.
Lo hago de la siguiente manera
cuenta['Conteo']=1
cuenta=cuenta.groupby(by=['Mes', 'ID Cliente'],as_index=False).agg({'Conteo':pd.Series.sum})
cuenta['#Clientes/Mes']=1
cant_clientes_mes=cuenta.drop(['Conteo'],axis=1)
cant_clientes_mes=cant_clientes_mes.groupby(by=['Mes']
,as_index=False).agg({'#Clientes/Mes':pd.Series.sum})
Esto produce esto

(Creo que existe una manera más corta de hacerlo, pero me funciona) este #Cliente mes me dice cuántos clientes diferentes compraron en cada mes, sin embargo, quiero integrar que si alguno de los ID ya compró en un mes anterior, no lo cuente sino únicamente en el mes en el que aparece por primera vez, por ejemplo, el id 2122 compró en el mes de enero, pero también en el mes de febrero, quiero que la cuenta sólo aparezca en el mes de enero, de esta manera el mes de febrero sólo tendría dos clientes diferentes.
Algo así, quiero que devuelva:

La verdad no he visto cómo poder hacerlo, pensé en usar un for para meses y un condicional con <=, para el mes así:
for i in mes:
for j in meses:
if j<=i:
cuenta=cuenta[cuenta['Mes']<=i]
cant_clientes_mes=cuenta['ID Cliente'].unique().shape[0]
print(cant_clientes_mes)
Pero el resultado es 5, 7, 8
Agradezco su colaboración