寻找数据框中事件之间的差异

looking for the difference between ocurrences in a datframe

我有一个这样的dataframe(真实的是700万条记录和345个特征)下图只是客户在一个月内进行操作的一小部分。我想要做的是在末尾创建一个列,其中包含每个操作之间的平均差。例如在第一条记录中 平均差(可能)为 3

当我说平均差异就像 op1 和 op4 之间的距离为 3,然后 op4 和 op11 之间的差异为 7,然后 op11 和 op15 之间的差异为 3,依此类推。因此,如果我们将所有值相加,我们将 13 分为总操作,即 op1、op4、op11、op15(4 个操作),我们得到 3.25。这就是我所说的平均差异。

这可能有效,如果你有你的数据,你可以 post 所以我可以创建数据框,我可能能够为你的数据得到一个准确的答案,但这可能有效:

summary_ave_data = df.copy()
summary_ave_data['mean'] = summary_ave_data.mean(numeric_only=True, axis=1)
summary_ave_data
  • numpy.flatnonzero:确定其中非零值是
  • numpy.diff:找出相邻值之间的差异。当从 flatnonzero 传递结果时,它发现位置
  • 之间的差异
  • numpy.mean:求平均值

使用非零值之间的平均位置距离

生成一个新列'MD'
df.assign(MD=[np.diff(np.flatnonzero(a)).mean() for a in df.to_numpy()])