본문 바로가기
파이썬

파이썬 pandas.Series.apply의 액세스 색인

by º기록 2021. 1. 8.
반응형

MultiIndex Series s 가 있다고 가정 해 보겠습니다.

>>> s
     values
a b
1 2  0.1 
3 6  0.3
4 4  0.7

행의 인덱스를 사용하는 함수를 적용하고 싶습니다.

def f(x):
   # conditions or computations using the indexes
   if x.index[0] and ...: 
   other = sum(x.index) + ...
   return something

그러한 함수에 대해 s.apply (f) 를 어떻게 할 수 있습니까? 이런 종류의 작업을 수행하는 데 권장되는 방법은 무엇입니까? 이 함수의 결과 값이 각 행과 동일한 MultiIndex에 적용된 새 Series를 얻을 것으로 예상합니다.

 

해결 방법

 

apply 가 색인에 액세스 할 수 있다고 생각하지 않습니다. 다음과 같이 각 행을 Series가 아닌 numpy 개체로 취급합니다.

In [27]: s.apply(lambda x: type(x))
Out[27]: 
a  b
1  2    <type 'numpy.float64'>
3  6    <type 'numpy.float64'>
4  4    <type 'numpy.float64'>

이 제한을 해결하려면 인덱스를 열로 승격하고 함수를 적용한 다음 원래 인덱스로 Series를 다시 만드십시오.

Series(s.reset_index().apply(f, axis=1).values, index=s.index)

다른 접근 방식에서는 s.get_level_values ​​를 사용할 수 있습니다.이 방법은 제 생각에는 종종 약간 못 생겼습니다. 정확히 f 가하는 일입니다.

 

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

 

 

반응형

댓글