python - 如何向下迭代一列名称以使用每个名称的出现次数填充新列
问题描述
我正在处理名为“公司”的数据框列(您可以在下面看到它的样子)。我想用这个专栏来创建另一个名为“occurrences”的专栏。我的目标是根据公司名称出现的次数顺序填充出现列。我希望它看起来像这样
company | occurrences
company 1 | 1
company 1 | 2
company 1 | 3
company 2 | 1
company 2 | 2
company 3 | 1
company 4 | 1
company 4 | 2
company 5 | 1
company 5 | 2
company 5 | 3
company 5 | 4
不幸的是,我在这样做时遇到了很多麻烦。这是我开始尝试的尝试,但首先,它创建了一个无限循环,我无法弄清楚如何摆脱它,其次,即使它有效,这也会错误地填充值。除此之外,嵌套在 while 语句中的 if 语句返回的是整个列,而不是公司的最终计数。
def occurrences(companies):
occurrences = []
for i in range(len(companies)):
x = 0
occurrences.append(x)
while str(companies[i]) == str(companies[i+1]):
x = x+1
occurrences.append(x)
if str(companies[i]) is not str(companies[i+1]):
x = companies.str.count(companies[i])
occurrences.append(x)
return round_number
occurrences(companies)
我知道“for i in range(len(companies))”这一行在列中向下迭代,并且我知道“str(companies[i]) == str(companies[i+1])”确实比较了公司名称. 我相信其他一切都是完全错误的。任何建议将不胜感激。
解决方案
推荐阅读
- php - 我的重定向是在 Apache2 服务器上上传网站后删除斜杠 - admin.site.comlogin 而不是 admin.site.com/login
- c# - 是否可以使用 linq 创建一个按给定位置排序的 csv 字符串?
- ios - 什么是开发吊舱?
- twilio - Twilio 在“总结”中的任务问题
- excel - 从另一个工作簿打开范围过滤器删除重命名选项卡另存为另一个工作簿 x20
- r - 对数刻度 y 轴 ggplot
- android - 通过 AsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR) 并行下载并获取单独的下载进度
- unity3d - Azure Spatial Anchors / Unity World Anchors 失去位置
- firebase - 等待firebase云触发功能结束后再发起http请求
- powershell - 添加本地管理员和应用密码