首页 > 解决方案 > 如何在 Python 中按排名在数据框中的行之间平均分配“供应”?

问题描述

前任。如果我的“供应”为 10,如何将其均匀地分布在数据框中,以便每一行都为 1,直到“供应”耗尽?每行必须得到 1,然后排名第一的行才能得到另一个。以下是我希望实现的输出。

data = [['1','2','10'],['2','2','10'],['3','2','10'],['4','1','10'],['5','1','10'],['6','1','10'],['7','1','10']]

df = pd.DataFrame(data,columns=['rank','allocation','supply'])

| rank | allocation | supply |
|:---- |:---------- |:------ |
| 1    |  2         | 10     |
| 2    |  2         | 10     |
| 3    |  2         | 10     |
| 4    |  1         | 10     |
| 5    |  1         | 10     |
| 6    |  1         | 10     |
| 7    |  1         | 10     |

标签: python

解决方案


一个简单的策略是将您的供应列构建为相应的列表并将其分配给您的数据框,如下所示:

df = pd.DataFrame(range(100)) # example
supply_num = 10
supply_col = ([1] * supply_num) + ([0] * (df.shape[0] - supply_num))
df['supply'] = supply_col
print(df)

推荐阅读