Создание новых значений строк в одном и том же фрейме данных 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 в основном основан на метках. Данные должны были быть выровнены и установлены метки.