J'ai le nom df suivant created_utc 0 t1_cqug90j 1430438400 1 t1_cqug90k 1430438400 2 t1_cqug90z 1430438400 3 t1_cqug91c 1430438401 4 t1_cqug91e 1430438401 ... ... ...

2
LE Anh Dung 15 mars 2021 à 04:48

1 réponse

Meilleure réponse

C'est une approche possible. Supposons d'abord que votre colonne name a une valeur unique. Ensuite, nous pouvons compter les created_utc comme ceci:

count_utc = df.groupby('created_utc').size()
cumulative_counts = count_utc.shift(fill_value=0).cumsum()

output = dict(zip(df['name'], df['created_utc'].map(cumulative_counts)) )

Ensuite, la première sortie ressemblerait à ceci:

{'t1_cqug90j': 0,
 't1_cqug90k': 0,
 't1_cqug90z': 0,
 't1_cqug91c': 3,
 't1_cqug91e': 3,
 't1_cqug920': 5
 ...
}

Maintenant, si les name ne sont pas uniques (ce qui est peu probable en raison de votre attente de sortie), mais dans ce cas, nous pouvons certainement prendre les plus grandes valeurs de cumulative_counts soustraire la taille de { {X2}} count (?), Quelque chose comme ceci:

output = dict(zip(df['name'],
                  df['created_utc'].map(cumulative_counts)
                      .sub(df.groupby('name')['name'].transform('size'))
                      .add(1)                  
                 ) )
1
Quang Hoang 15 mars 2021 à 03:01