2014-06-11 2 views
2

다음 코드는 (물론) 'Date1'로 정렬 된 행에서 'Item1'의 첫 번째 항목 만 유지합니다. 내가 어떻게 유지할 수 있는지에 대한 제안은 처음 5 번 일어난다.최초의 N 발생 유지

## Sort the dataframe by Date and keep only the earliest appearance of 'Item1' 
## drop_duplicates considers the column 'Date' and keeps only first occurence 

coocdates = data.sort('Date').drop_duplicates(cols=['Item1']) 
+0

아마'[5]'? – Fabricator

답변

1

당신은 head를 사용하려면, 어느 dataframe 자체 또는 on the groupby에 :

In [11]: df = pd.DataFrame([[1, 2], [1, 4], [1, 6], [2, 8]], columns=['A', 'B']) 

In [12]: df 
Out[12]: 
    A B 
0 1 2 
1 1 4 
2 1 6 
3 2 8 

In [13]: df.head(2) # the first two rows 
Out[13]: 
    A B 
0 1 2 
1 1 4 

In [14]: df.groupby('A').head(2) # the first two rows in each group 
Out[14]: 
    A B 
0 1 2 
1 1 4 
3 2 8 

: GROUPBY의 머리의 동작이 0.14로 변경되었습니다 (이 필터처럼 행동하지 않았다 - 인덱스를 수정 했으므로 이전 버전을 사용하는 경우 인덱스를 재설정해야합니다.

0

사용 groupby()nth()는 : N은 INT 또는 행의 서브 세트 인 경우, N은 INT의 목록 인 경우 Pandas docs 따르면

, nth()

각 그룹에서 n 번째 행을 취 .

따라서 당신이 필요로하는 모든입니다

df.groupby('Date').nth([0,1,2,3,4]).reset_index(drop=False, inplace=True) 
관련 문제