固定资产的Python值分配器

2024-09-29 05:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在数据帧中评级最好的行中分配固定的小时数(作为输入)。 我的代码如下:

import numpy as np
import pandas as pd
id = np.array([1022, 1085, 1086, 1090, 1100, 1140, 1173, 1191])
avail = np.array([22, 16, 29, 18, 2, 8, 9, 13])
base = np.array(['bcn','bcn','bio','agp','bcn','bio','bcn','bcn'])
pd.to_numeric(avail)
df = pd.DataFrame(np.column_stack([id, avail, base]), columns=['id', 'avail', 'base'] )
df
df.sort_values('avail', ascending=False)
df = df.astype({"avail": int, "avail": int})
sorteddf = df.sort_values('avail', ascending=False)
sorteddf = sorteddf.assign(hour_extra = 0)
sorteddf
row_num = sorteddf['id'].count()
sorteddf.index = range(0,row_num)
sorteddf

enter image description here

这是示例数据集,其中avail表示优先级。 然后,我想以公平的方式在他们中间分配一个固定的“天”值。示例:共有8行。输入13意味着每项为“1”,前5项为“2”

我尝试的代码如下所示:

limit = int(input())
total = sum(sorteddf['hour_extra'])
dataset = enumerate(sorteddf['hour_extra'])
for index, i in dataset:
sorteddf['hour_extra'][index] += 1
if index == limit-1:
break
print(sorteddf['hour_extra'])

但这只是增加了1个值,这意味着输入3时,前3个值等于1,很好。但输入13时,它不起作用

你知道我该怎么处理吗?非常感谢


Tags: 数据代码iddfbaseindexnparray