[PYTHON] 멀티 인덱스로 팬더 DataFrame을 어떻게 이동합니까?
PYTHON멀티 인덱스로 팬더 DataFrame을 어떻게 이동합니까?
다음 DataFrame에서 어떻게 Pandas가 다른 인덱스 값에 이동 된 값을 할당하지 않고도 인덱스를 기반으로 "beyer"열을 이동할 수 있습니까?
line_date line_race beyer
horse
Last Gunfighter 2013-09-28 10 99
Last Gunfighter 2013-08-18 10 102
Last Gunfighter 2013-07-06 8 103
.....
Paynter 2013-09-28 10 103
Paynter 2013-08-31 10 88
Paynter 2013-07-27 8 100
df [ 'beyer']. 교대 (1)는 ...
line_date line_race beyer beyer_shifted
horse
Last Gunfighter 2013-09-28 10 99 NaN
Last Gunfighter 2013-08-18 10 102 99
Last Gunfighter 2013-07-06 8 103 102
.....
Paynter 2013-09-28 10 103 71
Paynter 2013-08-31 10 88 103
Paynter 2013-07-27 8 100 88
문제는 Paynter에게 Last Gunfighter (그의 첫 번째 기록)가 배정되었다는 beyer가 주어 졌다는 것입니다. 대신 나는 그것이 이렇게되기를 원해.
line_date line_race beyer beyer_shifted
horse
Last Gunfighter 2013-09-28 10 99 NaN
Last Gunfighter 2013-08-18 10 102 99
Last Gunfighter 2013-07-06 8 103 102
.....
Paynter 2013-09-28 10 103 NaN
Paynter 2013-08-31 10 88 103
Paynter 2013-07-27 8 100 88
해결법
-
==============================
1.groupby / shift를 사용하여 각 그룹에 개별적으로 이동을 적용하십시오 (이 단순화를 지적한 Jeff에게 감사드립니다).
groupby / shift를 사용하여 각 그룹에 개별적으로 이동을 적용하십시오 (이 단순화를 지적한 Jeff에게 감사드립니다).
In [60]: df['beyer_shifted'] = df.groupby(level=0)['beyer'].shift(1); df Out[61]: line_date line_race beyer beyer_shifted Last Gunfighter 2013-09-28 10 99 NaN Last Gunfighter 2013-08-18 10 102 99 Last Gunfighter 2013-07-06 8 103 102 Paynter 2013-09-28 10 103 NaN Paynter 2013-08-31 10 88 103 Paynter 2013-07-27 8 100 88
멀티 인덱스가있는 경우 일련의 int 또는 레벨 이름을 groupby의 level 매개 변수에 전달하여 둘 이상의 레벨로 그룹화 할 수 있습니다.
from https://stackoverflow.com/questions/23198053/how-do-you-shift-pandas-dataframe-with-a-multiindex by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 : 객체가 명명 된 튜플의 인스턴스인지 확인하는 방법은 무엇입니까? (0) | 2018.11.13 |
---|---|
[PYTHON] Python Paramiko를 사용하여 SSH를 통해 명령 / 스크립트에 입력 / 변수 전달 (0) | 2018.11.13 |
[PYTHON] 판다에서 주어진 범위 내에서 임의의 날짜 생성하기 (0) | 2018.11.13 |
[PYTHON] 두 개의 관련 목록을 섞는 더 좋은 방법 (0) | 2018.11.13 |
[PYTHON] matplotlib의 오버레이 imshow 플롯 (0) | 2018.11.13 |