两个列表的SQL样式外连接

时间:2016-10-24 16:11:55

标签: python csv pandas nested-lists

我拥有来自记录用户事件的平台的数据 - 无论是民意调查的答案还是点击流数据。我试图汇集一些相关的数据集,每个数据集都有一个session_id列。

每个数据集都以csv开头,并以一系列嵌套列表的形式读入。并非每个会话都有用户回答问题或完成某些操作,因此每个数据集包含每个会话的条目 - 但是,每个会话至少存在于一个数据集中。< / p>

假设记录了5个会话:

e.g。数据集1:

SessionID | a | b | c | d

1 | x | x | x | X

2 | x | x | x | X

5 | x | x | x | X

e.g。数据集2:

SessionID | e | f | g | h

1 | x | x | x | X

3 | x | x | x | X

5 | x | x | x | X

e.g。数据集3:

SessionID | i | j | k |我

2 | x | x | x | X

3 | x | x | x | X

4 | x | x | x | X

我将如何构建:

SessionID | a | b | c | d | e | f | h |我| j | k |升

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导入pandas:

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

然而要求是我不使用任何外部库。

我很难找到一个可行的逻辑来检测sessionID中的间隙,然后用空数据填充列表,这样三个列表就可以简单地加在一起了。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如何定义“外部库”? sqlite3是否符合外部或内部资格?

  1. 如果没有,并且您想在关系操作方面考虑问题,可以将表格抨击为sqlite3文件并从那里获取。

  2. 如果数据集的数量是有限的,您可以创建一个类Session,其中包含一个字典,其中每列(a到j)都是一个键。如果您精通,可以使用__getattr__函数在需要时使用“点”表示法。对于“表格”,我只需使用字典,以密钥作为id,然后分三步填充字典(dataset1,dataset2,dataset3)。通过这种方式,您不必担心差距。