2016-07-10 32 views
1

Ich habe einen REQt., Wo ich bin wollen einen numerischen WertPython Pandas Zahlenbereich Binning

If the student marks is 
b/w 0-50 (incl 50) then assign the level column value = "L" 
b/w 50-75(incl. 75) then assign the level column value ="M" 
>75 then assign the level column value ="H" 

Hier ist, was ich habe

bekam
raw_data = {'student':['A','B','C'],'marks_maths':[75,90,99]} 
df = pd.DataFrame(raw_data, columns = ['student','marks_maths']) 
bins = [0,50,75,>75] 
groups = ['L','M','H'] 
df['maths_level'] = pd.cut(df['marks_maths'], bins, labels=groups) 

ich einen Syntaxfehler

File "<ipython-input-25-f0b9dd609c63>", line 3 
    bins = [0,50,75,>75] 
        ^
SyntaxError: invalid syntax 

Wie kann ich einen Cutoff referenzieren, der einen bestimmten Wert angibt?

Antwort

2

Try this:

bins = [0,50,75,101] or bins = [0,50,75,np.inf] 
+0

könnte der max 101 sein oder 1000..i weiß nicht ..so ich nur eine Bedingung setzen will, dass es> bestimmter Wert – pmv

+0

ich diese Antwort ursprünglich upvoted, aber es macht keinen Sinn. Sie können keine Zuweisung in einer 'oder' Anweisung haben. Was hast du hier gemeint? –

+0

@Ami Über was redest du? Das 'oder' ist Englisch 'oder', nicht Code 'oder' – Merlin

0

einfach die obere Grenze definieren als die bestmögliche Marke:

bins = [0, 50, 75, 100] 

Das Ergebnis ist wie erwartet:

student marks_maths maths_level 
0  A   75   M 
1  B   90   H 
2  C   99   H 
+0

Sie können auch np.inf verwenden, wenn Sie keine Bindung wünschen. – ayhan

+0

der obere Bereich kann alles sein .. es kann 100 oder 1000 sein. Ich weiß nicht den max/oberen Wert – pmv

1

this helps

import numpy as np 
import pandas as pd 

# 20 random numbers between 0 and 100 
scores = np.random.randint(0,100,20) 
df = pd.DataFrame(scores, columns=['scores']) 

bins = [0,50,75, np.inf] 

df['binned_scores'] = pd.cut(df.scores, bins=[0,50,75, np.inf], include_lowest=False, right=True) 
df['bin_labels'] = pd.cut(df.scores, bins=[0,50,75, np.inf], include_lowest=False, right=True, labels=['L','M','H']) 

Mit den Argumenten include_lowest und right können Sie steuern, ob die Kanten Ihrer Behälter inklusiv sind oder nicht.