python - 计算 pandas 中先前找到的重复项的数量

标签 python pandas

我有一个数据框,其中每一行都是网页访问和访问的日期时间。例如:

from datetime import datetime
import pandas as pd
df = pd.DataFrame({'idvisitor': [1, 2, 3, 2, 4, 1, 1],
                   'dt': pd.date_range(start=datetime(2016, 1, 1), periods=7)})
print(df)

现在,按日期时间排序后(示例数据帧已排序),我想添加一列,其中值是先前看到的具有相同 idvisitor 的元素数量。 IE。我们之前有多少次看到具有特定 idvisitor 的用户。

示例输出:

          dt  idvisitor  prev_visits
0 2016-01-01          1            0
1 2016-01-02          2            0
2 2016-01-03          3            0
3 2016-01-04          2            1
4 2016-01-05          4            0
5 2016-01-06          1            1
6 2016-01-07          1            2

请注意,我不想只计算某个 idvisitor 的重复项数(这相当简单),我希望计算每个 idvisitor 到当前行的重复项数行。

如何在没有昂贵的 for 循环的情况下完成此操作?我有数百万行。

最佳答案

groupby在“idvisitor”上并调用 cumcount :

In [29]:
df['prev_count'] = df.groupby('idvisitor').cumcount()
df

Out[29]:
          dt  idvisitor  prev_count
0 2016-01-01          1           0
1 2016-01-02          2           0
2 2016-01-03          3           0
3 2016-01-04          2           1
4 2016-01-05          4           0
5 2016-01-06          1           1
6 2016-01-07          1           2

关于python - 计算 pandas 中先前找到的重复项的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007950/

相关文章:

python - 如何向量化 pandas 中每个 ID# 的函数

Python 和循环导入再次

python - 复制.pdf、.html、.jpeg文件的查询方法

python - 需要 XOR ascii 消息才能打印到屏幕

pandas - 分割数据以按条件进行训练和测试

python - 如何在 pandas 数据框中堆叠 wthin 来执行其引用?

python - 将函数应用于 GroupBy pandas 数据框时出现 iterrows 错误

python - 如何避免错误的输入/输出文件名以及 C 程序中的错误参数

python - multiprocessing.Pool 示例

python - 我需要帮助将列表转换为 pandas 数据框