首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从dataframe中的日志创建共生表。

从dataframe中的日志创建共生表。
EN

Stack Overflow用户
提问于 2013-12-03 18:34:21
回答 2查看 1.2K关注 0票数 1

我在熊猫数据框架中有一个使用日志:

代码语言:javascript
复制
event_time   session_id      object
10:00:03      1             A
10:00:03      1             B
10:00:03      1             C
10:00:03      1             E
10:00:03      2             J
10:00:03      2             O
10:00:03      2             A
10:00:03      2             A

我已将对象按session_id分组。现在,我希望为任何给定的对象(即针对同一session_id)中对象共发生的次数的给定对对象构建对象与每个单元格对应的对象共生矩阵:大致如下所示:

代码语言:javascript
复制
   A    B      C   ...
A  20   1     12
B  1   100     9
C  12   9     30
...

是否有一种方法可以以dict的形式显示上面的内容,这样所有的非零事件都不会被表示为任何给定的对象'key'?

很明显,矩阵是三角形的。是否有办法将矩阵转换为表格的熔融数据表:

代码语言:javascript
复制
Object 1   Object 2    # of co-occurences
  A           A                20
  A           B                1
 ...         ...              ...

提前感谢您的帮助。

更新:我正在运行用于12 TB数据原型的algos,但是我将在一个多TB数据集的2-3 GB数据集上在AMAZON上运行“for”。我不认为国标是猪圈--建议的效率越高越好。

我希望能够在字典中查找对象,然后查看与它们同时出现的所有对象和计数(将来可能会在Solr中索引此结构)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-03 23:14:11

您可以使用表格

代码语言:javascript
复制
In [11]: df.pivot_table('event_time', 'session_id', 'object',
                         aggfunc=len, fill_value=0)
Out[11]: 
object      A  B  C  E  J  O
session_id                  
1           1  1  1  1  0  0
2           2  0  0  0  1  1
票数 2
EN

Stack Overflow用户

发布于 2013-12-03 19:51:30

你的投入

代码语言:javascript
复制
In [80]: df
Out[80]: 
  event_time  session_id object
0   10:00:03           1      A
1   10:00:03           1      B
2   10:00:03           1      C
3   10:00:03           1      E
4   10:00:03           2      J
5   10:00:03           2      O
6   10:00:03           2      A
7   10:00:03           2      A

[8 rows x 3 columns]

这是session_id计数矩阵。你大部分时间都在那里。(当然,如果你愿意的话,你也可以填写。)

代码语言:javascript
复制
In [81]: df.groupby('session_id').apply(lambda x: x['object'].value_counts()).unstack()
Out[81]: 
            A   B   C   E   J   O
session_id                       
1           1   1   1   1 NaN NaN
2           2 NaN NaN NaN   1   1

[2 rows x 6 columns]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20358962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档