python - 在数据框列上循环?
问题描述
我有一个小数据框,由两列组成,一个 ORG 列和一个百分比列。数据框根据百分比列从大到小排序。
我想创建一个 while 循环,将百分比列中的值相加,直到达到 0.80(80%)的值。
到目前为止,我已经尝试过:
retail_pareto = 0
counter = 0
while retail_pareto < .80:
retail_pareto += retailerDF[counter]['RETAILER_PCT_OF_CHANGE']
counter += 1
这不起作用,计数器和计数器以及retail_pareto 值都保持为零,没有真正的错误消息来帮助我解决我做错的事情。理想情况下,我希望最终得到一份百分比最大的组织列表,这些组织的总和达到 80%。
我不确定接下来要尝试什么。我搜索了这些论坛,但还没有在论坛中找到类似的东西。
非常感谢任何建议或帮助。谢谢你。
Example Dataframe:
ORG PCT
KST 0.582561
ISL 0.290904
BOV 0.254456
BRH 0.10824
GNT 0.0913631
DSH 0.023441
RDM -0.0119665
JBL -0.0348893
JBD -0.071883
WEG -0.232227
The output that I would expect would be something along the lines of:
ORG PCT
KST 0.582561
ISL 0.290904
解决方案
采用:
df_filtered = df.loc[df['PCT'].shift(fill_value=0).cumsum().le(0.80),:]
#if you don't want include where cumsum is greater than 0,80
#df_filtered = df.loc[df['PCT'].cumsum().le(0.80),:]
print(df_filtered)
ORG PCT
0 KST 0.582561
1 ISL 0.290904
推荐阅读
- c++ - 工作 C++03 代码上的 G++ (C++14) 链接器错误
- excel - 使用以日期为标准的其他列计算列中的非重复值
- javascript - Google 3.32 导致 MapOverlay 错误
- go - Golang`copy`时间复杂度
- ruby-on-rails - Docker 机器未连接到服务器
- javascript - 如何在不重新加载的情况下将查询字符串添加到 URL?
- powershell - Powershell CREDSSP 和 TLS 1.2
- apache-nifi - 如何在 NiFi DistributedMapCache 中保留配置单元表
- screen-scraping - 如何自动下载生成的 PDF
- c - 警告:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“char”