2014-11-10 6 views
0

이는 팬더 DataFrame 정상 컬럼과 함께 사용자 정의 열이 쿼리는

는 안양

index,Customer_MailID,Event_Quantity,Amount_Final,Channel,Week_Name,Venue_Name,Event_Genre1 
1,[email protected],2,172,Web,MON-TO-THU,Tivoli Cinema: Extreem,COMEDY 
2,[email protected],2,234,Web,MON-TO-THU,CineMAX: Pacific Mall Subhash Nagar,ACTION 
3,[email protected],3,502,Mobile,MON-TO-THU,DT City Centre: Shalimar Bagh,ACTION 
4,[email protected],4,1402,Web,Sunday,Rajiv Gandhi Cricket Stadium: Hyderabad,SPORTS 
5,[email protected],4,6449,Web,Saturday,Subrata Roy Sahara Stadium: Gahunje,SPORTS 
6,[email protected],1,82,Mobile,MON-TO-THU,Tivoli Cinema: Hyderabad,ACTION 
7,[email protected],1,219,Web,MON-TO-THU,INOX:JP Nagar -Central Mantri Junction,ACTION 
8,[email protected],2,384,Web,MON-TO-THU,Wave: City Emporium Mall,ACTION 
9,[email protected],4,1402,Web,Sunday,Rajiv Gandhi Cricket Stadium: Hyderabad,SPORTS 

난 다음 실행하고자하는 내 예를 들어, 데이터 프레임 및

입니다 그것에 대한 질의의 종류 ..

((합계)> = 1000) & & (Event_Quantity < 5) 등의 데이터 프레임의 열 집합을 선택합니다. n 개의 조건을 추가합니다. & 및 | 조건. 여기서 우리가 직면하고있는 문제는 원래 데이터 프레임에 (sum (Amount))라는 열이 없다는 것입니다. 이러한 시나리오에서는 에는 팬더 데이터 프레임을 쿼리하는 데 사용할 수있는 일반적인 솔루션이 있습니다.

답변

0

예에서 모든 Customer_MailID 데이터는 한 번만 사용됩니다. 나는 실제 데이터에 sum (Amount_Final)! = Amount_Final이 될 수있는 배수가 있다고 가정합니다. 그 가정이 맞다면, 한 가지 해결책은 Amount_Final의 합계를 전달할 열을 만든 다음 하위 집합에서이를 사용하는 것입니다. 이 같은

뭔가 :

df[(df.Total_Amount_Final > 1000) & (df.Event_Quantity <5)] 
+0

친애하는 JD, 내가 만들 해달라고 :

totalAmount = pd.DataFrame(df.groupby('Customer_MailID')['Amount_Final'].sum()).reset_index() totalAmount.columns = ['Customer_MailID', 'Total_Amount_Final'] df = df.merge(totalAmount) 

그 시점에서 당신은 당신이이처럼 일부에서 사용할 수있는 Total_Amount_Final라는 새 열을해야합니다 커스텀 컬럼의 where 조건을 적용하고 싶습니다. – user4235884

+0

필드를 계산하지 않고 필드에 where 조건을 적용하는 방법을 어떻게 제안합니까? –