2014-07-18 8 views
0

나는 ip_collection_2ip_offset_2의 조합을 찾고 싶은, 다중 색인 dataframe 개월 1-6 및 6-12에 대한 팬더부분적인 팬더 GROUPBY 인덱스

    ip_collection_2 ip_offset_2 
user_nm month    
100118231 2 set([142.136]) set([])       
100118231 3 set([142.136]) set([142.136])   
100118231 6 set([108.0]) set([142.136])    
100118231 7 set([108.0]) set([108.0])    
100118231 8 set([142.136]) set([108.0])    

ndf_2라고합니다. 먼저 groupby 객체를 만듭니다.

groupwork=ndf_2.groupby(level=[0,1]) 

이제 월별 인덱스로 어떻게 하위 집합을 만들 수 있습니까?

나는이 문서가 어딘가에 있다는 것을 알고 있지만, 분명히 얻지 못한 것이있다. 나는 단지 45 분을 소비 했으므로 지금은 그렇게하고있다. 간단한 데모/인식 조정은 많이 감사 할 것입니다. 만약 내가 제대로 이해하고

답변

0

당신은

df = df.reset_index(level=1) 
groups = df.groupby(df.month.replace(range(1,13),["1-6"]*6+["7-12"]*6)) 

위가 조금 못생긴 쓰레기통으로 그룹 원하지만 의미 그 그룹은 값 "1-6"과 7-12 값으로 같은과 1-6 대체 . 그런 다음 그 쓰레기통별로 그룹화하십시오.

getUnions = lambda df: df[df['ip_collection_2'].isin(df['ip_offset_2'])]['ip_collection_2'].values 
unions = groups.apply(getUnions) 

다음으로 열 사이에 합집합을 찾는 람다 함수를 적용하면됩니다. 문제가 노동 조합에 대한 빠른 방법을 찾아 내기를했다하지만이 작동

print unions 

출력

month 
1-6  [set([142.136]), set([142.136])] 
7-12      [set([108.0])] 
dtype: object