"Pandas 그룹 내에서 인접한 것끼리 그룹 지정하기"의 두 판 사이의 차이

(새 문서: ==개요== ;Pandas 그룹 내에서 인접한 것끼리 그룹 지정하기 ==예시 1== * user_id별로 num이 연속된 값이면 같은 그룹, 그렇지 않으면 다른 그룹 <...)
 
31번째 줄: 31번째 줄:
"""
"""
df = pd.read_csv(io.StringIO(tsv),sep='\t')
df = pd.read_csv(io.StringIO(tsv),sep='\t')
df
</syntaxhighlight>
<syntaxhighlight lang='python' notebook=1>
df['group'] = df['user_id']*100 + (df['num'] - df.groupby('user_id')['num'].shift() > 1).cumsum() + 1
df
df
</syntaxhighlight>
</syntaxhighlight>


==예시 2==
==예시 2==
* 이전 행과 timestamp의 차이가 1800초(30분) 초과이면 다른 그룹(여기서는 세션)으로 지정
<syntaxhighlight lang='python' notebook>
<syntaxhighlight lang='python' notebook>
import pandas as pd
import io
csv="""
access_id timestamp
1001 1600096200
1002 1600096600
1003 1600098112
1004 1600099361
1005 1600100758
1006 1600102905
1007 1600103307
1008 1600105711
1009 1600105878
1010 1600106064
1011 1600108489
1012 1600108793
"""
df = pd.read_csv(io.StringIO(csv),sep='\t')
df
</syntaxhighlight>
<syntaxhighlight lang='python' notebook=1>
df['group'] = df['user_id']*100 + (df['num'] - df.groupby('user_id')['num'].shift() > 1).cumsum() + 1
df
</syntaxhighlight>
</syntaxhighlight>



2021년 10월 10일 (일) 17:50 판

1 개요

Pandas 그룹 내에서 인접한 것끼리 그룹 지정하기

2 예시 1

  • user_id별로 num이 연속된 값이면 같은 그룹, 그렇지 않으면 다른 그룹
import pandas as pd
import io

tsv="""
user_id	num
1	1
1	2
2	3
2	4
1	4
2	5
1	5
2	6
1	7
2	8
1	8
1	9
1	10
2	12
2	13
1	13
1	14
1	15
1	16
"""
df = pd.read_csv(io.StringIO(tsv),sep='\t')
df
df['group'] = df['user_id']*100 + (df['num'] - df.groupby('user_id')['num'].shift() > 1).cumsum() + 1 
df

3 예시 2

4 예시 2

5 같이 보기

6 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}