三方对话:
红色_01回复绿色_01。绿色_01回复红色_01。这可以被认为是整个数据集中的一个三方对话。
所以,我正试图想出一个解决方案来查询整个数据集中发生了多少这样的对话?顺便说一下,这是一对一的对话系统。
我已经按时间戳进行了排序,在红色用户上使用了第n(0(,第n(1(。这只保留了所有红色用户发送的前两条消息。我已经在所有绿色用户上使用了nth(0(。这保留了绿色用户发送的所有第一个消息。但是想不出任何东西来统计按照三方对话的确切顺序发生的对话数量(红色_0x发送消息,绿色_0x回复,红色_0x回复(
我有一个这样的数据集:
conversation_id | user_id | 消息 | 时间戳|
---|---|---|---|
1 | red_01 | ||
1 | 绿色_01 | ||
1 | red_01 |
import pandas as pd
test_df = pd.DataFrame([[1,"red1","", 1],[1,"green1","", 2],[1,"red1","", 3], [2,"red1","", 1],[2,"red1","", 2],[2,"red1","", 3]],
columns = ["conversation_id","user_id","messages","timestamp"])
criteria = (
lambda x: len(x) == 3
and x.iloc[0].user_id.startswith("red")
and x.iloc[1].user_id.startswith("green")
and x.iloc[2].user_id.startswith("red")
)
n_groups = (
test_df
.sort_values("timestamp")
.groupby("conversation_id")
.filter(criteria)
).groupby("conversation_id").ngroups
n_groups
输出:
1