【发布时间】:2021-03-23 15:22:20
【问题描述】:
我有下表(df):
| ColumnA | ColumnB | Blocks | Groups |
|---|---|---|---|
| B | 32 | 1 | A1 |
| E | 99 | 2 | A1 |
| I | 76 | 3 | A1 |
| l | 55 | 4 | A1 |
| m | 27 | 5 | A1 |
| A | 12 | 1 | A2 |
| F | 123 | 2 | A2 |
| k | 80 | 3 | A2 |
| m | 27 | 4 | A2 |
| n | 67 | 5 | A2 |
| C | 44 | 1 | A3 |
| H | 87 | 2 | A3 |
| J | 231 | 3 | A3 |
| n | 67 | 4 | A3 |
| o | 34 | 5 | A4 |
| D | 76 | 1 | A4 |
| G | 65 | 2 | A4 |
我想添加另一个附加列,其中包含基于“组”列的 ID 列表。对于 A1 组,它应该是 101,102,103,... A2 它应该是 201, 202, 203,... 输出表应该如下所示:
| ColumnA | ColumnB | Blocks | Groups | IDs |
|---|---|---|---|---|
| B | 32 | 1 | A1 | 101 |
| E | 99 | 2 | A1 | 102 |
| I | 76 | 3 | A1 | 103 |
| l | 55 | 4 | A1 | 104 |
| m | 27 | 5 | A1 | 105 |
| A | 12 | 1 | A2 | 201 |
| F | 123 | 2 | A2 | 202 |
| k | 80 | 3 | A2 | 203 |
| m | 27 | 4 | A2 | 204 |
| n | 67 | 5 | A2 | 205 |
| C | 44 | 1 | A3 | 301 |
| H | 87 | 2 | A3 | 302 |
| J | 231 | 3 | A3 | 303 |
| n | 67 | 4 | A3 | 304 |
| o | 34 | 5 | A4 | 401 |
| D | 76 | 1 | A4 | 402 |
| G | 65 | 2 | A4 | 403 |
到目前为止我尝试了什么?
n = 4
TGn = round(len(df)/n)
idx = set(df.index // TGn)
df['IDs'] = (((df.index // TGn) + 1) * 100) + df.groupby('Groups').cumcount() + 1
这与组名(A1、A2、A3、A4)不一致。我该怎么做?
【问题讨论】:
标签: python dataframe numbers pandas-groupby series