2017-09-11 2 views
1

J'essaie de choisir une valeur d'un nombre d'occurrences de valeurs de colonne avec la fréquence max. Il y a des cas de bord quand plusieurs valeurs avec la même fréquence se sont avérées être le maximum.pandas DataFrame choisit la valeur de colonne qui ont toutes la fréquence d'occurrence maximale

Ce que je fais est de choisir la valeur avec la somme agrégée maximum des valeurs d'une autre colonne des rangées auxquelles cette valeur appartient.

max_cur_freq = df[df['currency'] != '']['currency'].mode().tolist() 
biggest_amount = 0.0 
biggest_amount_currency = '' 
for cur in max_cur_freq: 
    if df[df['currency'] == cur]['amount'].agg('sum') > biggest_amount: 
     biggest_amount_currency = cur 
     biggest_amount = df[df['currency'] == cur]['amount'].agg('sum') 

# assigns the currency with the largest sum amount as the values for column common_currency 
df['common_currency'] = biggest_amount_currency 

si le code choisit la currency avec la somme maximum amount sur les lignes où cette currency existe dans le DataFrame. Je me demande quel est le meilleur moyen de le faire.

PS. un échantillon DataFrame,

currency amount 
50  CAD 410.85 
51  CAD 1441.68 
53  CAD 1330.33 
17625 JPY 2797856.0 
17663 JPY 1440.0 
17664 JPY 1445.33 
16734 CNY 27840.00 
54546 CNY 273269.53 
17654 GBP 384.0 
17655 GBP 526.0 
16732 CHF 474.7 
16733 CHF 195173.3 

Répondre

1

Chaque colonne de dataframe est en fait une série.

maintenant dans une série si vous voulez savoir quel élément se produit la plupart du temps puis utilisez .value_counts(). Idxmax()

Et si vous voulez connaître la fréquence maximale, merci d'utiliser .value_counts() .max()