2016-06-23 4 views
-2

저는 여전히 판다에 대해 아주 새로운 것 같습니다. 나는 값이있는 행의 수를 다음 행까지의 값으로 세고 싶다.파이썬 데이터 프레임에 채워진 값 사이의 행 수를 카운트하십시오.

id Distance 
00 0 
01 0 
02 0 
03 0 
04 0 
05 10 
06 0 
07 0 
08 0 
09 0 
10 16 
11 0 
12 0 
13 6 

을하며이로 변환 할 수 있습니다 : 예를 들어, 그래서, 나는이처럼 보이는 dataframe을 싶습니다

id Distance  count 
05 10   6 
10 16   6 
13 6    3 

감사

+0

무엇을 시도 했습니까? 나는'''non_zeros = np.nonzero (data.Distance.values)''와 같은 것으로 시작할 것입니다. 이제 간단한 루프를 사용하여 원하는 값을 계산할 수 있습니다. – sascha

+0

for 루프로 작동하도록 만들 수 있었지만 믿을 수 없을 정도로 혼란 스러웠습니다. 나는 0이 아닌 것을 살펴보고, 전에는 들어 본 적이 없다. – Risato

답변

0

를이 코드는 당신이 원하는 것을 얻을 수있다. counts이 즉시 변경되므로 .copy()이 필요합니다.

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'Distance': [0,0,0,0,0,10,0,0,0,0,16,0,0,6]}) 

non_zeros = df['Distance'].values != 0 
zeros = ~non_zeros 

counts = np.cumsum(zeros)[non_zeros] 
counts[1:] -= counts[:-1].copy() 

df = df[non_zeros] 
df['count'] = counts 

print(df) 

이 코드는 당신은 +1count 열을 추가 할 수 있습니다 출력을

Distance count 
5   10  5 
10  16  4 
13   6  2 

을 생산하고 있습니다.

관련 문제