Создание новых значений строк в одном и том же фрейме данных pandas на основе различий других значений строк

Ниже существующий df

           data = np.array([['','Market','Product Code','Week','Sales','Units'],
            ['Total Customers',123,1,500,400],
            ['Total Customers',123,2,400,320],
            ['Major Customer 1',123,1,100,220],
            ['Major Customer 1',123,2,230,230],
            ['Major Customer 2',123,1,130,30],
            ['Major Customer 2',123,2,20,10],
            ['Total Customers',456,1,500,400],
            ['Total Customers',456,2,400,320],
            ['Major Customer 1',456,1,100,220],
            ['Major Customer 1',456,2,230,230],
            ['Major Customer 2',456,1,130,30],
            ['Major Customer 2',456,2,20,10]])

            df =pd.DataFrame(data)

Я хочу создать новые строки на основе разницы значений между значением строки в столбце "Рынок" (Всего клиентов) и значениями строки в столбце "Рынок" (Основной клиент 1 + Основной клиент 2). Я хочу присвоить новое значение строки в столбце "Рынок" как "Остальные клиенты" и добавить в тот же df.

В целом, я в основном пытаюсь проработать оставшийся "разрыв" в продажах и единицах рынка

Это то, что я пробовал до сих пор, используя loc, но я продолжаю получать ключевую ошибку. Кто-нибудь может помочь?

 df.loc[df['Market'] == 'Remaining Customers'] =          
                        df.loc[df['Market'] == 'Total Customers']-
                        (df.loc[df['Market'] == 'Major Customer 1']+df.loc[df['Market'] == 'Major Customer 2'])

1 ответ

Решение

Пожалуйста, смотрите этот блокнот для более подробной информации. https://nbviewer.jupyter.org/github/emican86/48999037/blob/master/48999037.ipynb

.loc в основном основан на метках. Данные должны были быть выровнены и установлены метки.

Другие вопросы по тегам