寻找数据框中事件之间的差异
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()])
我有一个这样的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()])