2016-10-24 2 views
0

설문 조사에 대한 응답 또는 클릭 스트림 데이터에 관계없이 사용자 이벤트를 기록하는 플랫폼의 데이터가 있습니다. 관련 데이터 세트를 여러 개 가져 오려고합니다. 각 데이터 세트에는 session_id 열이 있습니다.두 목록에 대한 SQL 스타일 외부 조인

각 데이터 세트는 일련의 중첩 목록으로 읽힌 CSV로 시작되었습니다. 모든 세션에서 사용자가 질문에 답하거나 특정 작업을 완료하지는 않으므로 각 데이터 집합에 이 아닌에는 모든 세션에 대한 항목이 포함되어 있습니다. 그러나 모든 세션은 데이터 집합 중 하나 이상에 있습니다.

예 :

기록 5 개 세션이있는 가정 데이터 세트 1 :

SessionID | a | b | c | d


1 | x | x | x | x


2 | x | x | x | x


5 | x | x | x | x


데이터 세트 2 :

SessionID | e | f | g | h


1 | x | x | x | x


3 | x | x | x | x


5 | x | x | x | x


데이터 세트 3 :

SessionID | i | j | k | l


2 | x | x | x | x


3 | x | x | x | x


4 | x | x | x | X


나는이 구성 것이다 방법 :

세션 ID를 | A | b | c | d | 전자 | f | h | i | j | k | l


1 | x | x | x | x | x | x | x | x | - | - | - | -


2 | x | x | x | x | - | - | - | - | x | x | x | x


3 | - | - | - | - | x | x | x | x | x | x | x | x


4 | - | - | - | - | - | - | - | - | x | x | x | x


5 | x | x | x | x | x | x | x | x | - | - | - | -이 작업을 수행하는 가장 쉬운 방법으로


는 팬더에 각 CSV를 가져 오는 것입니다 :

merged_df = pd.merge(dataset1, dataset2, how = 'outer', on="sessionID") 
pd.merge(merged_df, dataset3, how = 'outer', on="sessionID") 

요구 사항이 내가 어떤 외부 라이브러리를 사용하지 않는 것이 있습니다 그러나.

sessionID의 갭을 감지하고 3 개의 목록을 단순히 함께 추가 할 수 있도록 null 데이터로 목록을 채우는 데 유용한 논리를 찾는 데 어려움을 겪고 있습니다.

아이디어가 있으십니까?

답변

0

"외부 라이브러리"는 어떻게 정의합니까? sqlite3은 외부 또는 내부 자격이 있습니까? 그렇지 않은 및 관계형 작업의 관점에서 문제에 대해 생각하려면

  1. , 당신은 sqlite3를 파일로 테이블을 꽝하고 거기에서 걸릴 수 있습니다.

  2. 데이터 세트 수가 유한 한 경우 각 열 (a ~ j)이 키가 될 사전을 포함하는 세션 클래스를 만들 수 있습니다. 능숙하면 __getattr__ 함수를 사용하여 필요할 때 "점"표기법을 사용할 수 있습니다. "테이블"의 경우 ID를 키로 사용하여 사전을 사용하고 사전 (dataset1, dataset2, dataset3)을 세 단계로 채 웁니다. 이 방법으로 당신은 갭에 대해 걱정할 필요가 없을 것입니다.

+0

sqlite3이 잘 작동하는 것 같습니다. 감사! –