2017-11-14 7 views
0

에서 증가하는 정수를 입력 할 수있는 pd.DataFrame 같은 :방법을 감안할 때 팬더

print(pd.DataFrame([['a', 0, 'b'], ['c', 1, 'd'], ['f', 4, 'e']])) 
    0 1 2 
0 a 0 b 
1 c 1 d 
2 f 4 e 
내가 정수 열을 증가시켜 행 "을 작성"하고 싶은

. 즉, 내가 얻을 싶습니다 : 나는 큰 데이터 세트에 groupby 작업에서이를 사용 이대로가이 작업을 수행 할 수있는 가장 효율적인 코드를 찾고 있어요

 0 1 2 
0 a 0 b 
1 c 1 d 
2 NaN 2 NaN 
3 NaN 3 NaN 
4 f 4 e 

.

답변

2

당신은 인덱스로하여 1 열을 설정하고 사용 인덱싱 수 :

In [33]: df.set_index(1).reindex(range(df[1].iloc[0], df[1].iloc[-1]+1)).reset_index() 
Out[33]: 
    1 0 2 
0 0 a b 
1 1 c d 
2 2 NaN NaN 
3 3 NaN NaN 
4 4 f e 

을 당신이 걱정하는 경우 당신은 열을 다시 정렬 할 수 있습니다.

성능에 대해서는 모르지만 솔직하게 사용자 지정 groupby 작업은 시작하는 것이 매우 느립니다. 속도가 정말로 중요하다면, 가장 좋은 건 당신이 그것을 풀 수 있다면 전적으로 groupby 밖으로이 증가 작업을 이동하는 것입니다.