2013-06-28 6 views
1

이전 시계열에서 열 만들기 :팬더 : 나는 이런 식으로 뭔가 보이는 팬더 dataframe이 값

user date  value 
    1  01-2000  5 
    1  02-2000  6 
    1  03-2000  7 
    1  04-2000  8 
    2  01-2000  3 
    2  02-2000  4 
    2  03-2000  5 
    2  04-2000  6 
    3  01-2000  10 
    3  02-2000  11 
    3  03-2000  12 
    3  04-2000  13 

내가 지난 달 각 사용자에 대한 값을 가진 새 열을 생성하고 싶습니다를, 그래서 다음과 같이 보입니다.

user date  value new_col 
    1  01-2000  5  NaN 
    1  02-2000  6  5 
    1  03-2000  7  6 
    1  04-2000  8  7 
    2  01-2000  3  NaN 
    2  02-2000  4  3 
    2  03-2000  5  4 
    2  04-2000  6  5 
    3  01-2000  10  NaN 
    3  02-2000  11  10 
    3  03-2000  12  11 
    3  04-2000  13  12 

누군가 최선의 방법을 조언 해 줄 수 있습니까? 감사.

답변

3

사용 shift() :

import pandas as pd 
import io 

text = '''\ 
    user date  value 
    1  01-2000  5 
    1  02-2000  6 
    1  03-2000  7 
    1  04-2000  8 
    2  01-2000  3 
    2  02-2000  4 
    2  03-2000  5 
    2  04-2000  6 
    3  01-2000  10 
    3  02-2000  11 
    3  03-2000  12 
    3  04-2000  13''' 

df = pd.read_table(io.BytesIO(text), sep='\s+') 
df['new_col'] = df.groupby('user')['value'].apply(lambda grp: grp.shift()) 
print(df) 

user  date value new_col 
0  1 01-2000  5  NaN 
1  1 02-2000  6  5 
2  1 03-2000  7  6 
3  1 04-2000  8  7 
4  2 01-2000  3  NaN 
5  2 02-2000  4  3 
6  2 03-2000  5  4 
7  2 04-2000  6  5 
8  3 01-2000  10  NaN 
9  3 02-2000  11  10 
10  3 03-2000  12  11 
11  3 04-2000  13  12 
를 산출
관련 문제