반응형
Pandas 데이터 프레임이 있고 값이 다른 열의 값인 새 열을 만들고 한 행 아래로 이동하려고합니다. 마지막 행에는 NaN이 표시되어야합니다.
문제는 각 그룹의 마지막 행에 NaN이 표시되는 그룹별로이 작업을 수행하고 싶다는 것입니다. 그룹의 마지막 행이 데이터 프레임에서 인접한 그룹의 값을 "훔치지"않습니다.
내가 시도한 구현은 매우 부끄럽게 깨져서 근본적인 것을 분명히 오해하고 있습니다.
df['B_shifted'] = df.groupby(['A'])['B'].transform(lambda x:x.values[1:])
해결 방법
Shift는 group by 절의 출력에서 작동합니다.
>>> df = pandas.DataFrame(numpy.random.randint(1,3, (10,5)), columns=['a','b','c','d','e'])
>>> df
a b c d e
0 2 1 2 1 1
1 2 1 1 1 1
2 1 2 2 1 2
3 1 2 1 1 2
4 2 2 1 1 2
5 2 2 2 2 1
6 2 2 1 1 1
7 2 2 2 1 1
8 2 2 2 2 1
9 2 2 2 2 1
for k, v in df.groupby('a'):
print k
print 'normal'
print v
print 'shifted'
print v.shift(1)
1
normal
a b c d e
2 1 2 2 1 2
3 1 2 1 1 2
shifted
a b c d e
2 NaN NaN NaN NaN NaN
3 1 2 2 1 2
2
normal
a b c d e
0 2 1 2 1 1
1 2 1 1 1 1
4 2 2 1 1 2
5 2 2 2 2 1
6 2 2 1 1 1
7 2 2 2 1 1
8 2 2 2 2 1
9 2 2 2 2 1
shifted
a b c d e
0 NaN NaN NaN NaN NaN
1 2 1 2 1 1
4 2 1 1 1 1
5 2 2 1 1 2
6 2 2 2 2 1
7 2 2 1 1 1
8 2 2 2 1 1
9 2 2 2 2 1
참조 페이지 https://stackoverflow.com/questions/26280345
반응형
'파이썬' 카테고리의 다른 글
파이썬 Automating HP Quality Center with Python or Java (0) | 2020.12.06 |
---|---|
파이썬 Python-epoch 시간에서 사람이 읽을 수있는 시간으로 초 변환 (0) | 2020.12.06 |
파이썬 SQLAlchemy: a better way for update with declarative? (0) | 2020.12.06 |
파이썬 What is the fastest way to send 100,000 HTTP requests in Python? (0) | 2020.12.05 |
파이썬 Python-문자가 목록에 있는지 확인 (0) | 2020.12.05 |
댓글