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