以这个模型 Dataframe 为例:
CustomerID Number of Purchases
ABC 5
DEF 24
GHI 85
JKL 2
MNO 100
假设此数据框首先按Number of Purchases(降序)排序。如何向其中添加名为Score的新列,并按如下方式为其分配值:
- 在前60%的客户(即排序后的前3行)中,应将3行分配给分数。
- 在接下来的前20%客户(排序后的第4行)中,应将2个分配给分数。
- 在下一个和最后一个前20%的客户(排序后的第5行)中,应将1分配给分数。
如何在大型 Dataframe 中执行此操作?
2条答案
按热度按时间qeeaahzv1#
输出量
首先是排序,其中指出:ascending=False,因此排序顺序为逆序。proc变量是1%中的行数。
创建一个嵌套列表aaa。其中第一个元素是字符串范围的起始索引,第二个元素是结束索引。第三个元素是评估。创建一个具有空值的“分数”列,并重置 Dataframe 索引。
在循环中,loc通过slice访问行(这是从哪个索引中选择行)。由于loc是非独占访问的(例如,结束索引为3,则将通过索引3选择数据),因此使用i[1] - 1。
cwxwcias2#
一旦 Dataframe (df)已经被
Number_of_Purchases
排序,您可以使用以下命令生成
Score
列:.rank(pct=True)
-函数:计算排名(百分比)代码:
输出: