如何在数据框中对排序的 ID 进行累计计数?

问题描述 投票:0回答:2

我有一个看起来像这样的数据框。

import pandas as pd

data = {'ID':[29951,29952,29953,29951,29951],'DESCRIPTION':['IPHONE 15','SAMSUNG S40','MOTOROLA G1000','IPHONE 15','IPHONE 15'],'PRICE_PROVIDER1':[1000.00,1200.00,1100.00,1000.00,1000.00]}

df = pd.DataFrame(data)
df

我想添加一个计算唯一 ID 的新列。最终的 DF 应该是这样的。

我以为会这么简单:

df['cnt'] = df.groupby('ID').cumcount(ascending=True)
df

那不是我想要的。

python python-3.x pandas dataframe
2个回答
2
投票

试试这个:

df['cnt'], _ = pd.factorize(df['ID'])
print(df)
ID 描述 PRICE_PROVIDER1 cnt
0 29951 iPhone 15 1000 0
1 29952 三星 S40 1200 1
2 29953 摩托罗拉 G1000 1100 2
3 29951 iPhone 15 1000 0
4 29951 iPhone 15 1000 0

1
投票

这是另一种方式:

df['cnt'] = df['ID'].astype('category').cat.codes

输出:

      ID     DESCRIPTION  PRICE_PROVIDER1  cnt
0  29951       IPHONE 15           1000.0    0
1  29952     SAMSUNG S40           1200.0    1
2  29953  MOTOROLA G1000           1100.0    2
3  29951       IPHONE 15           1000.0    0
4  29951       IPHONE 15           1000.0    0
© www.soinside.com 2019 - 2024. All rights reserved.