【发布时间】:2017-05-16 02:51:22
【问题描述】:
假设我有一个数据框:
question user level
1 a 1
1 b 2
1 a 3
2 a 1
2 b 2
2 a 3
2 b 4
3 c 1
3 b 2
3 c 3
3 a 4
3 b 5
列级别指定主题的发起人和回复人。如果用户的级别为1,则表示他提出了问题。如果用户的等级为2,则表示他回复了提问的用户。如果用户的等级为3,则表示他回复了等级为2的用户,以此类推。
我想提取一个新的数据框,该数据框应该通过问题呈现用户之间的交流。它应该包含三列:“用户来源”、“用户目的地”和“回复计数”。回复计数是用户目标“直接”回复用户源的次数。
us_source us_dest reply_count
a b 2
a c 0
b a 0
b c 0
c a 0
c b 1
我尝试使用此代码查找前两列..
idx_cols = ['question']
std_cols = ['user_x', 'user_y']
df1 = df.merge(df, on=idx_cols)
df2 = df1.loc[f1.user_x != f1.user_y, idx_cols + std_cols]
df2.loc[:, std_cols] = np.sort(df2.loc[:, std_cols])
有人对第三栏有什么建议吗? 当且仅当 B 在第 k 层回复同一主题中第 k-1 层的 A 的消息时,考虑将 B 的回复“直接”回复给 A。如果一个话题是学生A发起的(1级发消息),B回复A(2级发消息),所以B直接回复A。只有2级到1级的学生回复。
【问题讨论】: