본문 바로가기
파이썬

파이썬 색인을 사용하여 Pandas 다중 색인 데이터 프레임을 반복하는 방법

by º기록 2020. 12. 8.
반응형

다음과 같은 데이터 프레임 df가 있습니다. 날짜와 시간은 2 개의 다단계 색인입니다.

                           observation1   observation2
date          Time                             
2012-11-02    9:15:00      79.373668      224
              9:16:00      130.841316     477
2012-11-03    9:15:00      45.312814      835
              9:16:00      123.776946     623
              9:17:00      153.76646      624
              9:18:00      463.276946     626
              9:19:00      663.176934     622
              9:20:00      763.77333      621
2012-11-04    9:15:00      115.449437     122
              9:16:00      123.776946     555
              9:17:00      153.76646      344
              9:18:00      463.276946     212

매일 데이터 블록에 대해 복잡한 프로세스를 실행하고 싶습니다.

의사 코드는 다음과 같습니다.

 for count in df(level 0 index) :
     new_df = get only chunk for count
     complex_process(new_df)

그래서 우선 날짜에 대한 블록에만 접근하는 방법을 찾지 못했습니다.

2012-11-03    9:15:00      45.312814      835
              9:16:00      123.776946     623
              9:17:00      153.76646      624
              9:18:00      463.276946     626
              9:19:00      663.176934     622
              9:20:00      763.77333      621

처리를 위해 보냅니다. 수준 0 열의 정확한 값을 언급하지 않고 수행 할 방법이 있는지 확실하지 않기 때문에 for 루프에서이 작업을 수행하고 있습니다. 몇 가지 기본 검색을 수행하고 df.index.get_level_values ​​(0)를 얻을 수 있었지만 모든 값을 반환하므로 루프가 하루 동안 여러 번 실행됩니다. 하루에 데이터 프레임을 만들어 처리를 위해 보내고 싶습니다.

 

해결 방법

 

한 가지 쉬운 방법은 인덱스의 첫 번째 수준으로 그룹화하는 것입니다. groupby 객체를 반복하면 그룹 키와 각 그룹을 포함하는 서브 프레임이 반환됩니다.

In [136]: for date, new_df in df.groupby(level=0):
     ...:     print(new_df)
     ...:     
                    observation1  observation2
date       Time                               
2012-11-02 9:15:00     79.373668           224
           9:16:00    130.841316           477

                    observation1  observation2
date       Time                               
2012-11-03 9:15:00     45.312814           835
           9:16:00    123.776946           623
           9:17:00    153.766460           624
           9:18:00    463.276946           626
           9:19:00    663.176934           622
           9:20:00    763.773330           621

                    observation1  observation2
date       Time                               
2012-11-04 9:15:00    115.449437           122
           9:16:00    123.776946           555
           9:17:00    153.766460           344
           9:18:00    463.276946           212

 

참조 페이지 https://stackoverflow.com/questions/25929319

 

 

반응형

댓글