Применение новой строки в индексе второго уровня - PullRequest
0 голосов
/ 05 октября 2018

У меня есть фрейм данных, который выглядит примерно так:

+-----------+---------+-------+-------+-------+
|           |         | Day 1 | Day 2 | Day 3 |
+-----------+---------+-------+-------+-------+
| Product 1 | Revenue |     0 |     0 |     0 |
|           | Cost    |     0 |     0 |     0 |
| Product 2 | Revenue |     0 |     0 |     0 |
|           | Cost    |     0 |     0 |     0 |
| Product 3 | Revenue |     0 |     0 |     0 |
|           | Cost    |     0 |     0 |     0 |
+-----------+---------+-------+-------+-------+

По существу двухуровневый индекс по вертикали.Первый уровень - это продукт, а второй - доход или стоимость.

Я хотел бы добавить строку «Прибыль» ко всем продуктам ниже «Выручка и стоимость» (просто «Выручка - стоимость»).Или даже среднее значение этого продукта. Доход и т. Д. Однако, после долгих экспериментов с приложением, я не могу заставить его работать с несколькими уровнями.

Product 1 Revenue    0
          Cost       0
          Profit     0

Как этого достичь?

1 Ответ

0 голосов
/ 05 октября 2018

Это зависит от того, сколько раз вы хотите сделать это и как хранятся ваши текущие другие значения.

Если вы хотите добавить только небольшое количество Прибылей к каждой из вышеперечисленных вы можете использовать этот метод .Тем не менее, этот метод использует ix, что следует считать устаревшим (я считаю).Поэтому я бы предложил использовать at,

df = pd.DataFrame({('A', 'b'): [1, 2, 3], ('A', 'a'): [7, 2, 9]}).T
df.at[('B', 'a'), :] = [1, 4, 5]

Out[1]:     
                0    1   2
         A  b   1    2   3
            a   7    2   9
         B  a   1    4   5

Если ваша информация о прибыли хранится в другом DataFrame, проще всего будет использовать concat, например,

df = pd.DataFrame({('A', 'b'): [1, 2, 3], ('A', 'a'): [7, 2, 9]}).T
df2 = pd.DataFrame({('B', 'a'): [1, 4, 5]}).T

pd.concat([df, df2])

Out[1]: 
        0   1   2
A   b   1   2   3
    a   7   2   9
B   a   1   4   5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...