2017-12-09 4 views
0

팬더와 함께 상당히 복잡한 groupby 작업을 수행하려고합니다.groupby 범위의 하위 범위 - 팬더

df1: 
begin, end, y 
0, 3, string10 
3, 7, string11 


df2: 
begin, end, x 
0, 2, string1 
1, 2, string2 
3, 4, string3 
4, 6, string4 

이 두 DF 어떤 특성을 가진 시간 슬롯을 나타냅니다 는 두 개의 데이터 프레임을 고려하십시오. DF1에는 큰 시간 슬롯이 포함되어 있으며 테두리는 항상 DF2보다 커집니다. 또한 DF2의 각 시작 부분은 항상 DF1의 시간 슬롯 중 하나에 포함되거나 같아야합니다. Pandas Groupby Range of Values

: 나는 확인을 시도

result: 
index, slot, begin_df2, end_df2, x, y 
0, (0,3), 0, 2, string1, string10 
, (0,3), 1, 2, string2, string10 
1, (3,6), 3, 4, string3, string11 
, (3,6), 4, 6, string4, string11 

나는 이것에 대한 팬더 API에서 합리적인 흐름을 찾을 수 없습니다 : 내가해야 할 일은

는 DF1 슬롯을 유지하는 자신의 특성에 따라 그룹 DF2이다

그러나 범위의 단일 값을 그룹화하는 것이 더 중요합니다. 당신의 간격이 DF1에서 서로 교차가없는 경우

+0

그룹화 여러 단계의 시도 - https://stackoverflow.com/questions/42998660/pandas-how-to-groupby-with-count 행과 함께 다중 레벨 – Tanu

답변

0

df1['key']=df1.iloc[:,:1].mean(1) 
df2['key']=df2.iloc[:,:1].mean(1) 
df=pd.merge_asof(df2,df1,on='key') 
df 
Out[401]: 
    begin_x end_x   x key begin_y end_y   y 
0  0  2 string1 0.0  0  3 string10 
1  1  2 string2 1.0  0  3 string10 
2  3  4 string3 3.0  3  7 string11 
3  4  6 string4 4.0  3  7 string11 
+0

약간 문제가 있습니다. 겹칠 가능성은 없지만 df1의 요소에 포함 된 df2에는 요소가없는 경우가 있습니다. NaN과 함께 테이블에 있어야합니다. – user3741859

+0

@ user3741859 당신은 df를 df2와 다시 병합 할 수 있습니다 :-) – Wen