我拥有来自记录用户事件的平台的数据 - 无论是民意调查的答案还是点击流数据。我试图汇集一些相关的数据集,每个数据集都有一个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中的间隙,然后用空数据填充列表,这样三个列表就可以简单地加在一起了。
有什么想法吗?
答案 0 :(得分:0)
如何定义“外部库”? sqlite3是否符合外部或内部资格?
如果没有,并且您想在关系操作方面考虑问题,可以将表格抨击为sqlite3文件并从那里获取。
如果数据集的数量是有限的,您可以创建一个类Session,其中包含一个字典,其中每列(a到j)都是一个键。如果您精通,可以使用__getattr__函数在需要时使用“点”表示法。对于“表格”,我只需使用字典,以密钥作为id,然后分三步填充字典(dataset1,dataset2,dataset3)。通过这种方式,您不必担心差距。