비슷한 질문이 있지만 다음에 대한 간단한 답을 찾을 수 없습니다. 나는 R에서 왔고 Pandas에게는 아주 새로운 점에 유의하십시오.팬더 데이터 프레임의 새 열 계산
"측정"(3 단계의 유니 코드)과 "Airquality"(numpy.float64)의 두 열이 포함 된 판다 데이터 프레임 df가 있다고 가정 해보십시오.
"Airquality"의 값을 기반으로하는 "color"라는 세 번째 열을 만들고 싶습니다. 또한, 나는 "측정"의 각 수준에 대해이 작업을 개별적으로 수행하려고합니다. df.loc을 사용하여 "측정"에서 df를 분할하여 성공했습니다. 더 나은 방법이있을
#calculate the maximum value of "Airquality" in df for each "measure" level:
maxi = df['Airquality'].max()
#initialize the column for "color" in df for each "measure" level:
df['color'] = None
#find the maximum value of "Airquality" in df for each "measure" level:
maxi = df['Airquality'].max()
#loop through the rows calculating and assigning the value for color,
#again, in df for each "measure" level
for i in range(len(df['Airquality'])):
df['color'][i] = int(100*df['Airquality'][i]/maxi)]
그러나, 이것이 내가 함께 일하고 있어요 큰 데이터 세트와 함께 매우 느리게 실행, 나는 확신 : 나는 다음 코드를 사용하여 df라고 각각 별도로 "컬러"를 계산 ... 아마도 판다 (Pandas)의 일부 기능을 사용하고 아마도 df를 세 가지로 나눌 필요없이 각각의 "측정"레벨에 하나씩 사용할 것입니다. 많은 Python 천재 중 한 사람에게서 배우기를 기대하면서 이것을 게시하십시오.
굉장, 그 작품 (그리고 훨씬 더 빠름)! 나는 한 지점에서 그와 가까운 것이 있었지만 결코 작동하지는 못했습니다. '.transform (max)'가'.max()'와 어떻게 다른지 모르지만, 나는 그것을 읽을 것이다. 엄청 고마워! 아, 앞으로 몇 가지 예제 데이터를 제공 할 것입니다. – davo1979
가장 쉬운 방법입니다. '.max()'는 각각 다른 측정 값을위한 3 개의 최대 값을 가진 시리즈를 제공합니다; '.transform (max)'는 6 개의 값을 가진 시리즈를 제공하는데, 원래 프레임의 각기 다른 행에 대해 하나씩 올바르게 일치시킵니다. – DSM