我有一个看起来像这样的数据框。
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
那不是我想要的。
试试这个:
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 |
这是另一种方式:
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