내가 이것을 가지고 있다고 가정하십시오.
>>> x = pandas.DataFrame([[1.0, 2.0, 3.0], [3, 4, 5]], columns=["A", "B", "C"])
>>> print x
A B C
0 1 2 3
1 3 4 5
이제 x
행별로 정규화하고 싶습니다. 즉, 각 행을 합계로 나눕니다. 에 설명 된대로 이 질문 이이 달성 될 수있다 x = x.div(x.sum(axis=1), axis=0)
. 그러나 이것은 새로운 DataFrame을 생성합니다 . 내 DataFrame이 크면 즉시 원래 이름에 할당하더라도이 새 DataFrame을 만드는 데 많은 메모리를 사용할 수 있습니다.
이 작업을 수행하는 효율적인 방법이 있습니까? 나는 그와 같은 옵션 x.idiv()
을 제공 하지만 업데이트 를 원합니다 . 이 특정 경우에는 부서가 필요하지만 때로는 모든 기본 작업에 대해 유사한 내부 버전을 사용하는 것이 좋습니다.axis
div
x
(행별로 반복하고 정규화 된 각 행을 원본에 다시 할당하여 제자리에 업데이트 할 수 있지만 속도가 느리고보다 효율적인 솔루션을 찾고 있습니다.)
사본을 만들지 않고 numpy에서 직접 수행 할 수 있습니다.
In [11]: x1 = x.values.T
In [12]: x1
Out[12]:
array([[ 1., 3.],
[ 2., 4.],
[ 3., 5.]])
In [13]: x1 /= x1.sum(0)
In [14]: x
Out[14]:
A B C
0 0.166667 0.333333 0.500000
1 0.250000 0.333333 0.416667
아마도 div에 대한 인플레 이스 플래그가 있어야할까요 ...?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다