我有一个像这样的日期框
ProductNumber ProductVersion DateStarted
AX1 R1 2018-01-01
AX1 R1 2018-01-02
AX1 R2 2018-01-03
AX1 R3 2018-01-04
AX1 R3 2018-01-05
BX1 R1 2018-01-01
BX1 R1 2018-01-02
AX1 R5 2018-01-03
AX1 R5 2018-01-04
AX1 R5 2018-01-05
我想对DateStarted列中的ProductNumber应用cumcount,这样就可以得到下面的dataframe。你知道吗
ProductNumber ProductVersion DateStarted Count
AX1 R1 2018-01-01 0
AX1 R1 2018-01-02 1
AX1 R2 2018-01-03 0
AX1 R3 2018-01-04 0
AX1 R3 2018-01-05 1
BX1 R1 2018-01-01 0
BX1 R1 2018-01-02 1
AX1 R5 2018-01-03 0
AX1 R5 2018-01-04 1
AX1 R5 2018-01-05 2
首先,我使用
df = d.sort_values(['ProductNumber','ProductVersion', 'DateStarted'], ascending = [True,True,True]).reset_index(drop=True)
然后我想以某种方式应用cumcount,我试着这样做。你知道吗
df['count'] =(df.drop_duplicates(['ProductNumber','ProductVersion', 'DateStarted'])
.groupby(['ProductNumber', 'ProductVersion'])['DateStarted']
.cumcount())
df['count'] = df['count'].ffill().astype(int)
但它不起作用。如何正确地执行此操作?你知道吗
编辑:这是我的输出
ProductNumber ProductVersion DateStarted Count
AX1 R1 2018-01-01 0
AX1 R1 2018-01-02 0
AX1 R2 2018-01-03 1
AX1 R3 2018-01-04 0
AX1 R3 2018-01-05 1
BX1 R1 2018-01-01 0
BX1 R1 2018-01-02 0
AX1 R5 2018-01-03 0
AX1 R5 2018-01-04 1
AX1 R5 2018-01-05 1
你的方法是正确的,如果你只是剃掉一些东西:
输出:
相关问题 更多 >
编程相关推荐