Python 第二列中的值计数是多少?

Python 第二列中的值计数是多少?,python,pandas,cumulative-sum,Python,Pandas,Cumulative Sum,我想根据键列中的值,在标记列中填充数字 如果列KEY中的值保持不变,我希望每两行填充相同的数字,而不是使用cumcount() 如果列键中的值更改,则填充的数字也会更改 这里是一个例子,df1是我想要从df0得到的 df0 = pd.DataFrame({'KEY':['0','0','0','0','1','1','1','2','2','2','2','2','3','3','3','3','3','3','4','5','6']}) df1 = pd.DataFrame({'KEY'

我想根据
列中的值,在
标记
列中填充数字

  • 如果列
    KEY
    中的值保持不变,我希望每两行填充相同的数字,而不是使用
    cumcount()
  • 如果列
    中的值更改,则填充的数字也会更改
这里是一个例子,df1是我想要从df0得到的

df0 = pd.DataFrame({'KEY':['0','0','0','0','1','1','1','2','2','2','2','2','3','3','3','3','3','3','4','5','6']})

df1 = pd.DataFrame({'KEY':['0','0','0','0','1','1','1','2','2','2','2','2','3','3','3','3','3','3','4','5','6'],
                    'flag':['0','0','1','1','2','2','3','4','4','5','5','6','7','7','8','8','9','9','10','11','12']})

您需要获取cumcount并添加一个。然后使用
%2
区分奇数行或偶数行。然后,取累积和减去1,从零开始计数

您可以使用:

df0['flag'] = ((df0.groupby('KEY').cumcount() + 1) % 2).cumsum() - 1
df0
Out[1]: 
   KEY  flag
0    0      0
1    0      0
2    0      1
3    0      1
4    1      2
5    1      2
6    1      3
7    2      4
8    2      4
9    2      5
10   2      5
11   2      6
12   3      7
13   3      7
14   3      8
15   3      8
16   3      9
17   3      9
18   4     10
19   5     11
20   6     12

好答案+1。我编辑了你的标题以使其更清晰,如果你愿意,可以重新编辑。另外,当你真正的意思是“熊猫”时,不要将事物称为“python”;只有12%的python问题是关于熊猫的。首先,你所有的值都是整数而不是字符串,所以你能编辑你的代码来分配/转换它们为整数吗?(或使用
df1.apply(pd.to_numeric,axis=1)
)接下来,请编辑您的解释,用文字进行澄清?这个太依赖于
标志
;我们是否应该始终假定
是单调递增的,并且只按+1变化?听起来您希望在连续两行的
上有一个有条件的
cumcount()
,默认情况下
标志也会每两行增加+1,当
增加时会有一个额外的+1?@smci,谢谢您的评论。这里的示例是我的真实数据集的表示。键列由df['KEY']=df.groupby([几个要素列]).ngroup()创建。其目的是根据特征将行区分为组。然后在每组中,我试着成对地排成几行。@David Erickson,谢谢你的回答。我希望它能正常工作。我做正确的事情。