Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 基于元组时间戳作为输入创建访问矩阵_Python 3.x_Pandas_Algorithm - Fatal编程技术网

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