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

时间:2018-09-27 18:44:40

标签: python pandas

在尝试自学Pandas的同时使用不同的数据帧,这让我感到沮丧,这似乎缺乏编程理解能力,但是有人可以帮忙吗?

考虑以下df:

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)) 

仅返回每个字符串的长度(正确),添加索引仅返回索引的长度,即出现n的次数。

我缺少基本的东西吗?我应该先创建一个列表,然后将其传递给df吗?

1 个答案:

答案 0 :(得分: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