2017-10-19 17 views
0

J'ai un ensemble de données avec un nom de colonne total des paiements, qui comprennent les paiements de 100 $ à 1000 $, il y a des paiements de 100,05 $, 102 $ ou 104,05, ce qui rend plus difficile. Si la ligne indique par exemple $ 97, alors je veux créer une colonne qui a les catégories ci-dessous 100 $ ou entre 100 et 200.Comment créer une nouvelle catégorie dans une base de données existante?

J'ai codé quelque chose comme ceci;

Code Screenshot

mais la sortie est la suivante, toutes les lignes dire entre 800 et 900;

Output Screenshot

S'il vous plaît Pour cette folks.

+1

S'il vous plaît [lire ceci] (https://meta.stackoverflow.com/a/285557/5241032) sur pourquoi ne pas publier des images de code, [et ceci] (https://stackoverflow.com/ help/mcve) sur comment pour créer un exemple minimal, complet et vérifiable. – cmaher

Répondre

1

Vous pouvez utiliser pandas.cut Considérez ce mannequin df

df = pd.DataFrame({'Total_payments': [97, 110, 100.5, 370, 820, 600]}) 

Vous pouvez ajouter une colonne de support à l'aide pd.cut

labels = ['<100', '100-200','200-300','300-400','400-500','500-600','600-700','700-800','800-900'] 
df['Brackets'] = pd.cut(df['Total_payments'], \ 
bins = np.arange(0, df['Total_payments'].max()+100, 100), labels = labels) 


    Total_payments Brackets 
0 97.0   <100 
1 110.0   100-200 
2 100.5   100-200 
3 370.0   300-400 
4 820.0   800-900 
5 600.0   500-600 

Edit: mis à jour la réponse avec le paramètre étiquettes comme suggéré par @Mikhail Venkov

+1

Vous pouvez également utiliser le paramètre 'labels' pour transmettre une liste de chaînes à utiliser comme étiquettes pour vos classes. Les bacs peuvent également être une liste de limites qui ne sont pas espacées uniformément. –