2017-04-20 3 views
0

다음과 같은 데이터 프레임이 있습니다. 다음과 같은 정보를 수집하여 데이터 프로필을 만들고 싶습니다.Python Pandas Dataframe은 여러 열의 값을 사용하여 필터링 한 후 행 수를 얻습니다.

1) 독특한 학생증 (학생 수) 내 대답은 작품의 수 :

print(len(df['Student ID'].unique())) 

고유의 학생 ID를 2) 카운트 곳 국제 = N (비 유학생 수)

내 대답은 작동하지 않습니다 고유의 학생 ID의 print(len(df1.loc[(df1['Student ID'].unique())['International Student'] == N]))

3) 수를 어디에 국제 = N & ATAR은 ATAR은 0-50

사이에 다른 질문입니다 NOT NULL (AN ATAR을 가지고 비 유학생의 수) 고유의 학생 ID의

4) 수 :

내가 처음

답변 후 학생 ID 당 모든 행을 삭제, 다른 모든 컬럼 만의 고유 학생 ID를 가진 새로운 dataframe을 만들 수있는 방법을

5) 2 ~ 5 번 문제는 크게 감사 할 것입니다. 새로운 df1에 대한 보답으로 하나 개의 컬럼에 대한 boolean indexingloc (Series) 주로 필요 Series.nunique

Student_ID   International  marks  ATAR 

119     N     60   80 
119     N     70   80 
119     N     75   80 
129     Y     78   75 
129     Y     60   75 
155     Y     85   
155     Y     80   

답변

1
df = pd.DataFrame({ 
'International': ['N', 'N', 'N', 'Y', 'Y', 'Y', 'Y'], 
'marks': [60, 70, 75, 78, 60, 85, 80], 
'Student_ID': [119, 119, 130, 140, 155, 155, 155], 
'ATAR': [80.0, 20.0, np.nan, 50.0, 15.0, np.nan, np.nan] 
}).reindex_axis(['Student_ID','International','marks','ATAR'], axis=1) 

print (df) 
    Student_ID International marks ATAR 
0   119    N  60 80.0 
1   119    N  70 20.0 
2   130    N  75 NaN 
3   140    Y  78 50.0 
4   155    Y  60 15.0 
5   155    Y  85 NaN 
6   155    Y  80 NaN 

, 마지막 drop_duplicates :

print(df['Student_ID'].nunique()) 
4 
print(df.loc[df['International'] == 'N', 'Student_ID'].nunique()) 
2 
print(df.loc[(df['International'] == 'N') & (df['ATAR'].notnull()), 'Student_ID'].nunique()) 
1 
print(df.loc[df['ATAR'].between(0,50), 'Student_ID'].nunique()) 
3 

df1 = df.drop_duplicates('Student_ID') 
print (df1) 
    Student_ID International marks ATAR 
0   119    N  60 80.0 
2   130    N  75 NaN 
3   140    Y  78 50.0 
4   155    Y  60 15.0 
+0

아니 문제는, 내 대학과 쇼트 컷은 BA STU이다;) – jezrael

+0

오 와우 롤 ... 완료 –

+0

: D 나를 위해 그것은 BA (Business Analytics) 학생을 의미합니다. 고마워. u도 –