Pandas 中唯一值的累积计数

傻了

我想按周从熊猫框架中的列中累积计算唯一值。例如,假设我有这样的数据:

df = pd.DataFrame({'user_id':[1,1,1,2,2,2],'week':[1,1,2,1,2,2],'module_id':['A','B','A','A','B','C']})
+---+---------+------+-----------+
|   | user_id | week | module_id |
+---+---------+------+-----------+
| 0 |       1 |    1 |         A |
| 1 |       1 |    1 |         B |
| 2 |       1 |    2 |         A |
| 3 |       2 |    1 |         A |
| 4 |       2 |    2 |         B |
| 5 |       2 |    2 |         C |
+---+---------+------+-----------+

我想要的是每周的唯一 module_id 数量的运行计数,即像这样:

+---+---------+------+-------------------------+
|   | user_id | week | cumulative_module_count |
+---+---------+------+-------------------------+
| 0 |       1 |    1 |                       2 |
| 1 |       1 |    2 |                       2 |
| 2 |       2 |    1 |                       1 |
| 3 |       2 |    2 |                       3 |
+---+---------+------+-------------------------+

将其作为循环执行很简单,例如这有效:

running_tally = {}
result = {}
for index, row in df.iterrows():
    if row['user_id'] not in running_tally:
        running_tally[row['user_id']] = set()
        result[row['user_id']] = {}
    running_tally[row['user_id']].add(row['module_id'])
    result[row['user_id']][row['week']] = len(running_tally[row['user_id']])
print(result)
{1: {1: 2, 2: 2}, 2: {1: 1, 2: 3}}

但是我的真实数据框很大,所以我想要一个矢量化算法而不是循环。

还有一个类似的冠冕堂皇的问题在这里,但看着公认的答案(点击这里)原来的海报不希望跨越的唯一日期累积,和我一样。

我将如何在熊猫中进行矢量化?

耶斯列

想法是list通过两np.cumsum列为每组创建s ,然后用于累积列表,最后将值转换为集合并获取长度:

df1 = (df.groupby(['user_id','week'])['module_id']
         .apply(list)
         .groupby(level=0)
         .apply(np.cumsum)
         .apply(lambda x: len(set(x)))
         .reset_index(name='cumulative_module_count'))

print (df1)
   user_id  week  cumulative_module_count
0        1     1                        2
1        1     2                        2
2        2     1                        1
3        2     2                        3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Matlab中唯一值的累积计数

来自分类Dev

在Python Pandas数据框中对唯一值进行分组和计数

来自分类Dev

如何在Python Pandas中对具有计数唯一值的多列进行分组

来自分类Dev

列中有列表对象时获取pandas Dataframe中唯一值的计数

来自分类Dev

每组唯一值的累积计数

来自分类Dev

遍历PANDAS中的唯一值

来自分类Dev

用列表替换col中的唯一值-Pandas

来自分类Dev

使用For循环在Pandas数据框中返回唯一值

来自分类Dev

如何使用 Pandas 打印组中列的唯一值?

来自分类Dev

在 Pandas 中创建一列,计算另一列中唯一值的数量

来自分类Dev

使用pandas groupby转换唯一值

来自分类Dev

Pandas 数据框唯一值

来自分类Dev

Pandas 自加入非唯一值

来自分类Dev

python / pandas-在单个DataFrame列中计算唯一值并将计数显示为新列

来自分类Dev

如何从值列表中的pandas列中提取唯一值

来自分类Dev

计算向量中唯一值的累积和

来自分类Dev

从一列中的唯一值创建 Pandas DataFrame

来自分类Dev

如何从Pandas Groupby中的多个列中获取唯一值

来自分类Dev

pandas df:仅针对B列中唯一的行更改A列中的值

来自分类Dev

在熊猫中滚动唯一值计数

来自分类Dev

熊猫系列中的唯一值计数

来自分类Dev

将特定值的计数存储在Pandas数据框中的一列中

来自分类Dev

在与另一列Pandas中的唯一值相关联的列中查找值的交集

来自分类Dev

在Pandas数据框中查找唯一值,而不考虑行或列的位置

来自分类Dev

在名称更改的列中查找唯一值时出现Pandas错误

来自分类Dev

将唯一值连接到新的数据框中(python,pandas)

来自分类Dev

基于pandas数据框中唯一性的2列值的编号组合

来自分类Dev

使用Pandas / Python为列中的重复项生成唯一值

来自分类Dev

使用Pandas对特定列中的某些唯一值执行诸如中位数,均值等操作

Related 相关文章

  1. 1

    Matlab中唯一值的累积计数

  2. 2

    在Python Pandas数据框中对唯一值进行分组和计数

  3. 3

    如何在Python Pandas中对具有计数唯一值的多列进行分组

  4. 4

    列中有列表对象时获取pandas Dataframe中唯一值的计数

  5. 5

    每组唯一值的累积计数

  6. 6

    遍历PANDAS中的唯一值

  7. 7

    用列表替换col中的唯一值-Pandas

  8. 8

    使用For循环在Pandas数据框中返回唯一值

  9. 9

    如何使用 Pandas 打印组中列的唯一值?

  10. 10

    在 Pandas 中创建一列,计算另一列中唯一值的数量

  11. 11

    使用pandas groupby转换唯一值

  12. 12

    Pandas 数据框唯一值

  13. 13

    Pandas 自加入非唯一值

  14. 14

    python / pandas-在单个DataFrame列中计算唯一值并将计数显示为新列

  15. 15

    如何从值列表中的pandas列中提取唯一值

  16. 16

    计算向量中唯一值的累积和

  17. 17

    从一列中的唯一值创建 Pandas DataFrame

  18. 18

    如何从Pandas Groupby中的多个列中获取唯一值

  19. 19

    pandas df:仅针对B列中唯一的行更改A列中的值

  20. 20

    在熊猫中滚动唯一值计数

  21. 21

    熊猫系列中的唯一值计数

  22. 22

    将特定值的计数存储在Pandas数据框中的一列中

  23. 23

    在与另一列Pandas中的唯一值相关联的列中查找值的交集

  24. 24

    在Pandas数据框中查找唯一值,而不考虑行或列的位置

  25. 25

    在名称更改的列中查找唯一值时出现Pandas错误

  26. 26

    将唯一值连接到新的数据框中(python,pandas)

  27. 27

    基于pandas数据框中唯一性的2列值的编号组合

  28. 28

    使用Pandas / Python为列中的重复项生成唯一值

  29. 29

    使用Pandas对特定列中的某些唯一值执行诸如中位数,均值等操作

热门标签

归档