代码之家  ›  专栏  ›  技术社区  ›  Umar.H

在条件匹配的df中迭代数字

  •  2
  • Umar.H  · 技术社区  · 6 年前

    玩不同的数据帧,同时尝试自学熊猫,这让我困惑了一段时间,这似乎是一个缺乏编程理解,但有人能帮助吗?

    考虑以下因素:

    ID  Name                    Week
    1   Matthew                 1751
    1   Matthew                 1751
    1   Matthew                 1751
    2   Jon                     1751
    2   Jon                     1751
    2   Jon                     1751
    2   Jon                     1751
    3   Lisa                    1751
    3   Lisa                    1751
    3   Lisa                    1751
    3   Lisa                    1751
    3   Lisa                    1751
    3   Lisa                    1751
    3   Lisa                    1751
    

    我在这里要做的是为索引中的每一个事件向周数加上+1,但是只在名称与它自己匹配的地方。

    ID  Name            Week
    1   Matthew         1751
    1   Matthew         1752
    1   Matthew         1753
    2   Jon             1751
    2   Jon             1752
    2   Jon             1753
    2   Jon             1754
    3   Lisa            1751
    3   Lisa            1752
    3   Lisa            1753
    3   Lisa            1754
    3   Lisa            1755
    3   Lisa            1756
    3   Lisa            1757
    

    我试过一个简单的for循环

    但它只是将索引的长度增加到数字,我也尝试过

    for n in df.Name:
        print(len(n)) 
    

    我是不是错过了一些基本的东西?我应该先创建一个列表,然后将其传递给df吗?

    1 回复  |  直到 6 年前
        1
  •  6
  •   Abhi    6 年前

    使用 groupby.cumcount

    df['Week'] = df.Week.add(df.groupby('Name').cumcount())
    
       ID    Name   Week
    0   1   Matthew 1751
    1   1   Matthew 1752
    2   1   Matthew 1753
    3   2   Jon     1751
    4   2   Jon     1752
    5   2   Jon     1753
    6   2   Jon     1754
    7   3   Lisa    1751
    8   3   Lisa    1752
    9   3   Lisa    1753
    10  3   Lisa    1754
    11  3   Lisa    1755
    12  3   Lisa    1756
    13  3   Lisa    1757