Я хочу добавить строку в конце фрейма данных, который можно сгруппировать по переменной.
Мой фрейм данных выглядит так:
|ID | Name1 | Name2 | PointA | PointB | Var1 | Var2 |
| 1 | AAA | zzz | ABC | BCD | 1 | 5 |
| 1 | AAA | zzz | BCD | CDE | 2 | 5 |
| 1 | AAA | zzz | CDE | DEF | 3 | 5 |
| 2 | BBB | yyy | STU | TUV | 1 | 6 |
| 2 | BBB | yyy | TUV | UVW | 2 | 6 |
| 2 | BBB | yyy | UVW | VWX | 3 | 6 |
| 2 | BBB | yyy | VWX | WXY | 4 | 6 |
И что я хочу, это добавить строку в конце каждой категории, как определено ID
:
|ID | Name1 | Name2 | PointA | PointB | Var1 | Var2 |
| 1 | AAA | zzz | ABC | BCD | 1 | 5 |
| 1 | AAA | zzz | BCD | CDE | 2 | 5 |
| 1 | AAA | zzz | CDE | DEF | 3 | 5 |
| 1 | AAA | zzz | DEF | --- | 4 | 0 |
| 2 | BBB | yyy | STU | TUV | 1 | 6 |
| 2 | BBB | yyy | TUV | UVW | 2 | 6 |
| 2 | BBB | yyy | UVW | VWX | 3 | 6 |
| 2 | BBB | yyy | VWX | WXY | 4 | 6 |
| 2 | BBB | yyy | WXY | --- | 5 | 0 |
Я пытался: (мой оригинальный df называется operacionales
)
df = pd.DataFrame(columns = operacionales.columns)
val = range(1, 22223)
for x in val:
test = operacionales.loc[operacionales['ID'] == x]
li = [test.ID.iloc[0], test.Name1.iloc[0], test.Name2.iloc[0],
test.PointB.iloc[-1], '-', test.Var1.max() + 1, 0]
t = pd.DataFrame(li).T
t.columns = test.columns
test2 = test.append(t)
df = df.append(test2)
но я получил "IndexError: одиночный позиционный индексатор вышел за пределы"
Я попробовал то же самое, но с индексом [-1]
вместо [0]
в коде, и результат тот же.
Как вы видите, строка, которую я хочу добавить, такая же, как и другие строки группы, за исключением:
1. PointA
(которым я хочу быть последним значением переменной PointB
),
2. PointB
(который я хочу установить в '---'),
3. Var1
(которым я хочу быть +1 от последнего значения в группе) и
4. Point2
(который я хочу установить в 0).
Я нашел это ( добавление строк к объекту групповой работы Pandas ), но это мне не очень помогло.
Буду признателен за любую помощь.