2017-09-06 2 views
1

다른 열을 기반으로 한 컬럼의 시리즈 개체 :팬더 :이 같은 데이터가

     end station name User Type 
0     Carmine St & 6 Ave Subscriber 
1   South End Ave & Liberty St Subscriber 
2  Christopher St & Greenwich St Subscriber 
3    Lafayette St & Jersey St Subscriber 
4      W 52 St & 11 Ave Subscriber 
5    E 53 St & Lexington Ave Subscriber 
6      W 17 St & 8 Ave Subscriber 
7     St Marks Pl & 2 Ave Subscriber 
8  Washington St & Gansevoort St Customer 
9    Barclay St & Church St Subscriber 
10  Washington St & Gansevoort St Customer 
11    E 37 St & Lexington Ave Subscriber 
12      E 51 St & 1 Ave Subscriber 
13      W 33 St & 7 Ave Subscriber 
14     Pike St & Monroe St Subscriber 
15    E 24 St & Park Ave S Subscriber 
16      1 Ave & E 15 St Subscriber 
17     Broadway & W 32 St Customer 
18      E 39 St & 3 Ave Customer 
19     W 59 St & 10 Ave Subscriber 
20    Centre St & Chambers St Subscriber 
21      9 Ave & W 45 St Customer 
22      8 Ave & W 33 St Subscriber 
23    Suffolk St & Stanton St Subscriber 
24     W 47 St & 10 Ave Subscriber 
25      W 33 St & 7 Ave Subscriber 
26      8 Ave & W 33 St Subscriber 
27      1 Ave & E 15 St Customer 
28      8 Ave & W 33 St Subscriber 
29      W 33 St & 7 Ave Subscriber 
...        ...   ... 

내가 인기의 내림차순으로 고객 다섯 (5) 가장 인기있는 방송국을 찾으려면을

import pandas as pd 
rides = pd.read_csv(csv_file_path, low_memory=False, parse_dates=True) 
five_popular_station_end_trip = rides['end station name'].value_counts().head() 

내가 한 열에서 가장 인기있는 방송국을 찾을 수 있지만 다른 열을 기반으로 그것을 발견하는 방법에 대한 아무 생각이 :

여기 내 코드입니다.

+0

[팬더의 열에서 값을 기준으로 DataFrame에서 행을 선택]의 사용 가능한 복제 (https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas) –

+0

내 솔루션은 어떻게 작동합니까? – jezrael

답변

0

난 당신이 boolean indexing에 의해 처음으로 필터링 할 필요가 있다고 생각 :

df1 = rides[rides['User Type'] == 'Customer'] 
five_popular_station_end_trip = df1['end station name'].value_counts().head() 
print (five_popular_station_end_trip) 
Washington St & Gansevoort St 2 
Broadway & W 32 St    1 
1 Ave & E 15 St     1 
E 39 St & 3 Ave     1 
9 Ave & W 45 St     1 
Name: end station name, dtype: int64 

을하지만 모든 범주가 ​​필요한 경우 :

df = rides.groupby('User Type')['end station name'] \ 
      .apply(lambda x: x.value_counts().head()) \ 
      .reset_index(name='count') \ 
      .rename(columns={'level_1':'end station name'}) 
print (df) 
    User Type    end station name count 
0 Customer Washington St & Gansevoort St  2 
1 Customer    Broadway & W 32 St  1 
2 Customer    1 Ave & E 15 St  1 
3 Customer    E 39 St & 3 Ave  1 
4 Customer    9 Ave & W 45 St  1 
5 Subscriber    8 Ave & W 33 St  3 
6 Subscriber    W 33 St & 7 Ave  3 
7 Subscriber    W 59 St & 10 Ave  1 
8 Subscriber   E 24 St & Park Ave S  1 
9 Subscriber    W 17 St & 8 Ave  1 
관련 문제