【发布时间】:2016-03-18 16:46:33
【问题描述】:
对于 Pandas 来说相对较新,来自 R 背景。我有一个像这样的DataFrame
import pandas as pd
import numpy as np
df = pd.DataFrame({'ProductID':[0,5,9,3,2,8], 'StoreID':[0,0,0,1,1,2]})
ProductID StoreID
0 0 0
1 5 0
2 9 0
3 3 1
4 2 1
5 8 2
对于每个 StoreID,如何根据订购的 ProductID 将df 的行标记为 1、2、...?那么,我如何标准化这些等级呢?换句话说,我如何实现以下目标
df['Product_Rank_Index'] = np.array([1,2,3,2,1,1])
df['Product_Rank_Index_Normalized'] = np.array([1/3, 2/3, 3/3, 2/2, 1/2, 1/1])
ProductID StoreID Product_Rank_Index Product_Rank_Index_Normalized
0 0 0 1 0.333333
1 5 0 2 0.666667
2 9 0 3 1.000000
3 3 1 2 1.000000
4 2 1 1 0.500000
5 8 2 1 1.000000
我尝试使用df.groupby('StoreID') 做一些事情,但无法正常工作。
【问题讨论】:
-
我不是您所在领域的专家,但您的标准化排名指数似乎不太标准化。它们似乎与商店中的产品数量成线性关系。