반응형
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python으로 소켓을 통해 바이너리 데이터 보내기 (0) | 2021.01.09 |
---|---|
파이썬에서 시간을 비교하는 방법? (0) | 2021.01.09 |
파이썬 Python에서 특정 길이의 임의 문자열을 생성하는 가장 좋은 방법은 무엇입니까? (0) | 2021.01.08 |
파이썬 백 스페이스 키 입력을 발생시키는 Python 코드? (0) | 2021.01.08 |
파이썬 Django에서 커스텀 미들웨어를 설정하는 방법 (0) | 2021.01.08 |
댓글