Python数据帧交互

Python数据帧交互,python,pandas,pycharm,Python,Pandas,Pycharm,我有以下数据帧: topic student level week 1 a 1 1 1 b 2 1 1 a 3 1 2 a 1 2 2 b 2 2 2 a 3 2 2 b 4 2 新的数据框架应该代表学生之间通过主题的互动。它应该包含四列:“学生来源”、“学生目的地”、“周”和“回复计

我有以下数据帧:

topic  student level week
1      a       1     1
1      b       2     1
1      a       3     1
2      a       1     2
2      b       2     2
2      a       3     2
2      b       4     2
新的数据框架应该代表学生之间通过主题的互动。它应该包含四列:“学生来源”、“学生目的地”、“周”和“回复计数”

Student Destination是每个学生与之共享主题的学生

回复计数是学生目的地“直接”回复学生来源的次数

新的数据帧应如下所示:

st_source st_dest  week  reply_count
    a        b       1        1
    a        b       2        2
    b        a       1        1
    b        a       2        1
通过一个例子可以更容易地解释回复计数

如果一个线程由学生a启动(通过在级别1发送消息),B回复a(在级别2发送消息),C回复B(在级别3发送消息)。然后B“直接”回复A,C“直接”回复 B、 但是C对A的回答并不直接(因此我们不计算它)

有人知道吗


提前谢谢你

你试过什么吗?这看起来像是家庭作业问题。谢谢@Psidom的建议!我有一个稍微不同的解决方案。学生来源和目的地是同一个人。可能是因为我的学生比示例中给出的多。
result = (df.groupby('week').apply(
        lambda g: g.groupby([g.student.shift(), g.student])
        .week.agg({'reply_count': 'count'})
        .rename_axis(("st_source", "st_dest"))
    ).reset_index())
​
result[['st_source', 'st_dest', 'week', 'reply_count']].sort_values(['st_source', 'st_dest'])

# st_source     st_dest   week  reply_count
#0        a         b        1          1
#2        a         b        2          2
#1        b         a        1          1
#3        b         a        2          1