Python 3.x 基于元组时间戳作为输入创建访问矩阵
我正在为大学做一个项目,有几天因为一个问题而受阻 首先,在对条目数据进行一些操作之后,我有以下内容:Python 3.x 基于元组时间戳作为输入创建访问矩阵,python-3.x,pandas,algorithm,Python 3.x,Pandas,Algorithm,我正在为大学做一个项目,有几天因为一个问题而受阻 首先,在对条目数据进行一些操作之后,我有以下内容: d = pd.DataFrame({ 'ID':["007", "001", "009"], 'users': [[("us1", "us2", "1577839066196", '1589200898463'), ('us2
d = pd.DataFrame({
'ID':["007", "001", "009"],
'users': [[("us1", "us2", "1577839066196", '1589200898463'),
('us2', "us3", '1589476569647', '1589476734542'),
('us5', 'us1', '1586234607616', '1589195456609'),
('us5', 'us1', '1586234607618', '1589195456689')],
[("us2", "us3", '1589301928018', '1589463287633'),
("us3", "us2", '1589463287633', '1589469006691')],
[('us1', 'us2', '1589931863229', '1589931878670')]] })
“用户”是(user1、user2、timestamp user1、timestamp user2)的元组列表。这是在这些时间戳上访问ID的用户列表
我想做的是创建一个带有访问计数的矩阵,我称之为“访问兴趣”。因此,这将是:
For each (user1, ID, timestamp1) where to_date(timestamp1) < T
For each user user2:
If (user1, user2) exists for this ID
access_interest(user)[ID] += 1
每个(user1、ID、timestamp1)的日期(timestamp1)
编辑
预期产出应为:
在这张图片上,你可以看到“007”的“us2”是数字1。这是因为在第一个“for each”中,当我们修复“us1”和“007”时,007将存在(us1,us2),因此我们在us2上添加1
对于us3也是一样,当我们在第一个“for each”上固定“us2”和“007”时,我们将有(us2,us3),所以我们在us3上为007添加一个
输出:
In [227]: d.set_index(['ID'])[all_users]
Out[227]:
us1 us2 us3 us5
ID
007 1 1 0 1
001 0 1 1 0
009 1 0 0 0
最后一个不是元组列表。对不起-但是你能发布你想要从这个@Catrina得到的确切输出吗?是的,输出应该是算法返回的,但是我会用我想要的输出更新这个问题,一秒钟:)为什么第一行第一列(007-US1)和第三行第二列(009-US2)的值是0而不是1你是对的,是个错误,我会改正的!
In [227]: d.set_index(['ID'])[all_users]
Out[227]:
us1 us2 us3 us5
ID
007 1 1 0 1
001 0 1 1 0
009 1 0 0 0